QOJ.ac

QOJ

IDProblemSubmitterResultTimeMemoryLanguageFile sizeSubmit timeJudge time
#606773#8935. Puzzle: Easy as Scrabbleucup-team4352WA 1ms3756kbC++233.1kb2024-10-03 12:05:572024-10-03 12:05:57

Judging History

你现在查看的是最新测评结果

  • [2024-10-03 12:05:57]
  • 评测
  • 测评结果:WA
  • 用时:1ms
  • 内存:3756kb
  • [2024-10-03 12:05:57]
  • 提交

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();
}

Details

Tip: Click on the bar to expand more detailed information

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.