QOJ.ac
QOJ
ID | 题目 | 提交者 | 结果 | 用时 | 内存 | 语言 | 文件大小 | 提交时间 | 测评时间 |
---|---|---|---|---|---|---|---|---|---|
#606773 | #8935. Puzzle: Easy as Scrabble | ucup-team4352 | WA | 1ms | 3756kb | C++23 | 3.1kb | 2024-10-03 12:05:57 | 2024-10-03 12:05:57 |
Judging History
answer
#include<bits/stdc++.h>
using namespace std;
using ll = long long;
int n,m;
string Up,Down,Left,Right;
string mp[1002];
int okUp[1002],okDown[1002],okLeft[1002],okRight[1002];
inline int check() {
for(int i=1;i<=n;i++) {
if(Left[i]=='.') continue;
for(int j=1;j<=m;j++) {
if(mp[i][j]=='.') continue;
if(Left[i]!=mp[i][j]) return 0;
break;
}
}
for(int i=1;i<=n;i++) {
if(Right[i]=='.') continue;
for(int j=m;j>=1;j--) {
if(mp[i][j]=='.') continue;
if(Right[i]!=mp[i][j]) return 0;
break;
}
}
for(int j=1;j<=m;j++) {
if(Up[j]=='.') continue;
for(int i=1;i<=n;i++) {
if(mp[i][j]=='.') continue;
if(Up[j]!=mp[i][j]) return 0;
break;
}
}
for(int j=1;j<=m;j++) {
if(Down[j]=='.') continue;
for(int i=n;i>=1;i--) {
if(mp[i][j]=='.') continue;
if(Down[j]!=mp[i][j]) return 0;
break;
}
}
return 1;
}
void solve() {
cin>>n>>m;
cin>>Up;
Left.push_back('.');
Right.push_back('.');
for(int i=1;i<=n;i++) {
cin>>mp[i];
Left.push_back(mp[i][0]);
Right.push_back(mp[i].back());
mp[i].pop_back();
}
cin>>Down;
int flag=0;
for(int i=1;i<=n;i++) {
for(int j=1;j<=m;j++) {
if(mp[i][j]!='.') continue;
char L=okLeft[i]?'.':Left[i];
char U=okUp[j] ?'.':Up[j];
if(L==U) {
if(L=='.') continue;
mp[i][j]=L;
okLeft[i]=okUp[j]=1;
}
else if(U=='.') {
mp[i][j]=L;
okLeft[i]=1;
}
else if(L=='.') {
mp[i][j]=U;
okUp[j]=1;
}
else {
continue;
}
}
}
for(int i=n;i>=1;i--) {
for(int j=m;j>=1;j--) {
if(mp[i][j]=='x') continue;
char R=okRight[i]?'.':Right[i];
char D=okDown[j] ?'.':Down[j];
if(R==D) {
if(R=='.') continue;
mp[i][j]=R;
okRight[i]=okDown[j]=1;
}
else if(R=='.') {
mp[i][j]=D;
okDown[j]=1;
}
else if(D=='.') {
mp[i][j]=R;
okRight[i]=1;
}
else {
continue;
}
}
}
for(int i=1;i<=n;i++) {
for(int j=1;j<=m;j++) {
if(mp[i][j]=='x') mp[i][j]='.';
}
}
if(!check()) return void (cout<<"NO");
for(int i=1;i<=n;i++) {
for(int j=1;j<=m;j++) {
cout<<mp[i][j];
}cout<<'\n';
}
}
/*
5 5
.CBA...
....x..
..x...C
A.....B
B..x..A
C......
.......
*/
signed main() {
ios::sync_with_stdio(0);
cin.tie(0),cout.tie(0);
int t=1;
// cin>>t;
while(t--)
solve();
}
详细
Test #1:
score: 0
Wrong Answer
time: 1ms
memory: 3756kb
input:
5 5 .CBA... ....x.. ..x...C A.....B B..x..A C...... .......
output:
CBA.. ....C A...B B...A C....
result:
wrong answer YES or NO expected in answer, but CBA.. found.