QOJ.ac

QOJ

IDProblemSubmitterResultTimeMemoryLanguageFile sizeSubmit timeJudge time
#638941#8935. Puzzle: Easy as Scrabbleucup-team173WA 0ms3572kbC++203.0kb2024-10-13 17:22:542024-10-13 17:22:54

Judging History

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

  • [2024-10-13 17:22:54]
  • 评测
  • 测评结果:WA
  • 用时:0ms
  • 内存:3572kb
  • [2024-10-13 17:22:54]
  • 提交

answer

#include <bits/stdc++.h>

using namespace std;

using ll = long long;

void solve() {
    int n, m;
    cin >> n >> m;
    vector<string> s(n + 2);
    for(int i = 0; i < n + 2; i++) {
        cin >> s[i];
    }
    string up(m + 1, 0), dw(m + 1, 0), lt(n + 1, 0), rt(n + 1, 0);
    for(int i = 1; i <= m; i++) {
        up[i] = s[0][i];
        dw[i] = s[n + 1][i];
    }
    for(int i = 1; i <= n; i++) {
        lt[i] = s[i][0];
        rt[i] = s[i][m + 1];
    }
    for(int j = 1; j <= m; j++) {
        int l = 0, r = n + 1;
        if(up[j] != '.') {
            for(l = 1; l <= n; l++) {
                if(s[l][j] != 'x' && (lt[l] == '.' || lt[l] == up[j])) {
                    s[l][j] = up[j];
                    if(lt[l] == up[j]) lt[l] = '.';
                    break;
                } else {
                    s[l][j] = 'x';
                }
            }
        }
        if(dw[j] != '.') {
            for(r = n; r; r--) {
                if(s[r][j] != 'x' && (lt[r] == '.' || lt[r] == dw[j])) {
                    s[r][j] = dw[j];
                    if(lt[r] == dw[j]) lt[r] = '.';
                    break;
                } else {
                    s[r][j] = 'x';
                }
            }
        }
        if(l > n || r <= 0) {
            cout << "NO\n";
            return;
        }
        for(int i = l + 1; i < r; i++) {
            if(lt[i] != '.' && s[i][j] == '.') {
                s[i][j] = lt[i];
                lt[i] = '.';
            }
        }
    }
    for(int i = 1; i <= n; i++) {
        for(int j = 1; j <= m; j++) {
            if(s[i][j] == 'x') s[i][j] = '.';
            cout << s[i][j];
        }
        cout << '\n';
    }
    for(int i = 1; i <= n; i++) {
        if(lt[i] != '.') {
            int flg = 0;
            for(int j = 1; j <= m; j++) {
                if(s[i][j] == '.' || s[i][j] == lt[i]) {
                    s[i][j] = lt[i];
                    flg = 1;
                    break;
                }
            }
            if(!flg) {
                cout << "NO\n";
                return;
            }
        }
        if(rt[i] != '.') {
            int flg = 0;
            for(int j = m; j; j--) {
                if(s[i][j] == '.' || s[i][j] == rt[i]) {
                    s[i][j] = rt[i];
                    flg = 1;
                    break;
                }
            }
            if(!flg) {
                cout << "NO\n";
                return;
            }
        }
    }
    cout << "YES\n";
    for(int i = 1; i <= n; i++) {
        for(int j = 1; j <= m; j++) {
            if(s[i][j] == 'x') s[i][j] = '.';
            cout << s[i][j];
        }
        cout << '\n';
    }
}
int main() {
    ios::sync_with_stdio(0);
    cin.tie(0), cout.tie(0);
    int t = 1;
    // cin >> t;
    while(t--) solve();
    return 0;
}
/*
5 5
.CBA...
....x..
..x...C
A.....B
B..x..A
C......
.......

1 2
....
Nx..
..O.

5 5
.AB....
A......
A......
A......
A......
A......
.......

*/

Details

Tip: Click on the bar to expand more detailed information

Test #1:

score: 0
Wrong Answer
time: 0ms
memory: 3572kb

input:

5 5
.CBA...
....x..
..x...C
A.....B
B..x..A
C......
.......

output:

CBA..
.....
A....
B....
C....
YES
CBA..
....C
A...B
B...A
C....

result:

wrong answer YES or NO expected in answer, but CBA.. found.