QOJ.ac

QOJ

IDProblemSubmitterResultTimeMemoryLanguageFile sizeSubmit timeJudge time
#544429#8935. Puzzle: Easy as Scrabbleucup-team4821#WA 26ms4704kbC++204.5kb2024-09-02 16:31:592024-09-02 16:32:00

Judging History

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

  • [2024-09-02 16:32:00]
  • 评测
  • 测评结果:WA
  • 用时:26ms
  • 内存:4704kb
  • [2024-09-02 16:31:59]
  • 提交

answer

#include <bits/stdc++.h>
int n, m, L[1005], R[1005], U[1005], D[1005];
char a[1005][1005], l[1005], r[1005], u[1005], d[1005];
std::queue<std::pair<int, int>> que;
void NO()
{
    std::cout << "NO" << std::endl;
    exit(0);
}
void myassert(bool cond)
{
    if(!cond)
        NO();
}
void set(int x, int y)
{
    if (a[x][y] != 'x')
    {
        a[x][y] = 'x';
        que.push({x, y});
    }
}
void updatel(int p)
{
    while (L[p] < m && a[p][L[p] + 1] == 'x')
        ++L[p];
    if (l[p] != '.' && L[p] == m)
        NO();
    int q = L[p] + 1;
    if (U[q] + 1 == p && l[p] != '.' && u[q] != '.' && l[p] != u[q])
        set(p, q);
    if (n - D[q] == p && l[p] != '.' && d[q] != '.' && l[p] != d[q])
        set(p, q);
    if (L[p] + R[p] == m - 1 && l[p] != '.' && r[p] != '.' && l[p] != r[p])
        set(p, q);
}
void updater(int p)
{
    while (R[p] < m && a[p][m - R[p]] == 'x')
        ++R[p];
    if (r[p] != '.' && R[p] == m)
        NO();
    int q = m - R[p];
    if (U[q] + 1 == p && r[p] != '.' && u[q] != '.' && r[p] != u[q])
        set(p, q);
    if (n - D[q] == p && r[p] != '.' && d[q] != '.' && r[p] != d[q])
        set(p, q);
    if (L[p] + R[p] == m - 1 && l[p] != '.' && r[p] != '.' && l[p] != r[p])
        set(p, q);
}
void updateu(int q)
{
    while (U[q] < n && a[U[q] + 1][q] == 'x')
        ++U[q];
    if (u[q] != '.' && U[q] == n)
        NO();
    int p = U[q] + 1;
    if (L[p] + 1 == q && u[q] != '.' && l[p] != '.' && u[q] != l[p])
        set(p, q);
    if (m - R[p] == q && u[q] != '.' && r[p] != '.' && u[q] != r[p])
        set(p, q);
    if (U[q] + D[q] == n - 1 && u[q] != '.' && d[q] != '.' && u[q] != d[q])
        set(p, q);
}
void updated(int q)
{
    while (D[q] < n && a[n - D[q]][q] == 'x')
        ++D[q];
    if (d[q] != '.' && D[q] == n)
        NO();
    int p = n - D[q];
    if (L[p] + 1 == q && d[q] != '.' && l[p] != '.' && d[q] != l[p])
        set(p, q);
    if (m - R[p] == q && d[q] != '.' && r[p] != '.' && d[q] != r[p])
        set(p, q);
    if (U[q] + D[q] == n - 1 && d[q] != '.' && d[q] != '.' && u[q] != d[q])
        set(p, q);
}
signed main()
{
    std::ios::sync_with_stdio(false);
    std::cin >> n >> m;
    for (int i = 0; i <= n + 1; ++i)
        for (int j = 0; j <= m + 1; ++j)
            std::cin >> a[i][j];
    for (int i = 1; i <= n; ++i)
        l[i] = a[i][0];
    for (int i = 1; i <= n; ++i)
        r[i] = a[i][m + 1];
    for (int i = 1; i <= m; ++i)
        u[i] = a[0][i];
    for (int i = 1; i <= m; ++i)
        d[i] = a[n + 1][i];
    for (int i = 1; i <= n; ++i)
        updatel(i);
    for (int i = 1; i <= n; ++i)
        updater(i);
    for (int i = 1; i <= m; ++i)
        updateu(i);
    for (int i = 1; i <= m; ++i)
        updated(i);
    while (!que.empty())
    {
        std::pair<int, int> now = que.front();
        que.pop();
        updatel(now.first);
        updater(now.first);
        updateu(now.second);
        updated(now.second);
    }
    for (int i = 1; i <= n; ++i)
        if (l[i] != '.')
            a[i][L[i] + 1] = l[i];
    for (int i = 1; i <= n; ++i)
        if (r[i] != '.')
            a[i][m - R[i]] = r[i];
    for (int i = 1; i <= m; ++i)
        if (u[i] != '.')
            a[U[i] + 1][i] = u[i];
    for (int i = 1; i <= m; ++i)
        if (d[i] != '.')
            a[n - D[i]][i] = d[i];
    for (int i = 1; i <= n; ++i)
        for (int j = 1; j <= m; ++j)
            if (a[i][j] == 'x')
                a[i][j] = '.';
    for (int i = 1; i <= n; ++i)
    {
        for (int j = 1; j <= m; ++j)
            if (isupper(a[i][j]))
            {
                myassert(a[i][0] == '.' || a[i][j] == a[i][0]);
                break;
            }
        for (int j = m; j >= 1; --j)
            if (isupper(a[i][j]))
            {
                myassert(a[i][m + 1] == '.' || a[i][j] == a[i][m + 1]);
                break;
            }
    }
    for (int i = 1; i <= m; ++i)
    {
        for (int j = 1; j <= n; ++j)
            if (isupper(a[j][i]))
            {
                myassert(a[0][i] == '.' || a[j][i] == a[0][i]);
                break;
            }
        for (int j = n; j >= 1; --j)
            if (isupper(a[j][i]))
            {
                myassert(a[n + 1][i] == '.' || a[j][i] == a[n + 1][i]);
                break;
            }
    }
    std::cout << "YES" << std::endl;
    for (int i = 1; i <= n; ++i, std::cout << std::endl)
        for (int j = 1; j <= m; ++j)
            std::cout << a[i][j];
    return 0;
}

Details

Tip: Click on the bar to expand more detailed information

Test #1:

score: 100
Accepted
time: 0ms
memory: 3604kb

input:

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

output:

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

result:

ok Correct.

Test #2:

score: 0
Accepted
time: 0ms
memory: 3544kb

input:

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

output:

NO

result:

ok Correct.

Test #3:

score: 0
Accepted
time: 0ms
memory: 3604kb

input:

5 5
.U.N.X.
U....xX
Ox....X
M...xxN
Vx....S
Ix.x..X
..IBHX.

output:

YES
U.NX.
.O..X
M.N..
.VB.S
.I.HX

result:

ok Correct.

Test #4:

score: 0
Accepted
time: 0ms
memory: 3564kb

input:

10 10
.BAZEMIEKUJ.
A..........K
B..x.x.x..x.
K.........xT
A.x..x.....J
Hx....x....B
Q..x....x.xW
S...x......W
S...x.xxx..Z
...x......xZ
I..x..x.x.xR
.QKO.ID..RW.

output:

YES
.AZEMIEK..
B.......U.
K.......T.
A........J
.H.......B
Q.......W.
S........W
S.O.....Z.
QK...D..Z.
...II...R.

result:

ok Correct.

Test #5:

score: 0
Accepted
time: 0ms
memory: 3500kb

input:

5 10
.PTWIVVISPY.
T...x.x....Y
Xx.x.xx..x.K
P.x.xx.....K
S..........A
E.........xS
.SPEASDCYSA.

output:

YES
.TW.V.ISPY
.X.I.....K
P....V...K
SP.......A
..EASDCYS.

result:

ok Correct.

Test #6:

score: 0
Accepted
time: 0ms
memory: 3772kb

input:

10 5
.HVYN..
Y.x...C
V..x..B
H...x.Z
....xxN
....x.P
B.x...G
Fx.x..D
Txx..xK
E..x.xR
Sx....B
.EPSBD.

output:

YES
..YNC
.V..B
H...Z
..N..
....P
B...G
.F..D
..TK.
EP.R.
..SB.

result:

ok Correct.

Test #7:

score: 0
Accepted
time: 0ms
memory: 3624kb

input:

50 50
.YDOGQIDENEUMONVSGZNMNHLEZCXIRMK.OOCKJOKXXZDUFEMPXS.
Y.x...x.x.x..x..........x.......x......x.....x....xX
N.........x.....x.....x....x.x.xxxxx.x...x.........E
U.....x.....x....x......x.....x........x..........xS
...x......x........x..x.....x.x.x........x.x.x.....S
Q.....x.x..x..........x....x....

output:

YES
Y.OGQ.D.N.UM.NVSGZNMNHL.ZCXIRMK.OOCKJO.XXZDU.EMPX.
ND...I.E....O..........E..............K.....F...E.
U........E......................................S.
.................................................S
Q................................................L
F...........................................

result:

ok Correct.

Test #8:

score: 0
Accepted
time: 1ms
memory: 3596kb

input:

100 100
.NUXAMX.LNWZKRRKZIRNZVDJF.XRB.VEFQXHTGLGIKZYSRPPF.YGVTOSQCADEG.KYKH.NWWO.XDXJW.G.RBHABFLWHFVUNOLBHMKN.
U..x...x...x....xx........x.....x.....xxx..x..........x..x...x..xx..x..x..x............x.....x.....x.N
C...x.......x.............x....x.x.x..x........x..x.xx..x..xx.................x..........

output:

YES
.U.AMX.LNW.KRRK..RNZVDJF..RB.VE.QXHTG...KZ.SRPPF.YGVT.SQ.ADE..K..H..WW..X.XJW.G.RBHABF.WHFVU.OLBHM.N
.CX.......Z....ZI..............F......GI..Y..........O..C...G..YK..N..O..D..................N.....KO
.O...................................L...........................................................

result:

ok Correct.

Test #9:

score: 0
Accepted
time: 7ms
memory: 4108kb

input:

500 500
..FHFDLGFGHREQBGILNRAGJ.ERZSAFGLQ.ESEBI.ELKM.RENLNFQSPT.TXUEIKHHOQWABSELMOPGTFGTXGYMTSU.N.O.AX.OGNSWTFSLUIMTUX.RUCECKZCXOJNPTFVAJUJTF.LHXURYIQIJCVWDBVZ.ZXFRAT.XIPXTDCSLHJHSZCW.RMNUGPIHYUQYUYAY.NHCBU.JPMLG.DDXAJWKNZJVKNAWAJZAHW.FCBEVATZ.YZ.HQ..QPLFARSHNP..EDPIKLYLF.FIFXEXR.XSUORAP.CZPMJXPUS.W...

output:

YES
...FDL...HREQ..ILNRA...ERZSA.GL...SE.I..LK...ENLNFQS.T.TX.E.K.HOQWA.SE.M.PGTFG.XGY..SU...O.AX.OGNS.TFSLUIM.UX...CEC..CXOJNPT.VA..JTF.LHXURYIQI.CVWDB.Z..XFR.T..IPXTD..LHJHSZCW.RMNUGPIHYUQY.YA..N.CB..JPM.G.DD.AJW.NZJ...AWAJZAHW.FCB...T..YZ.HQ..Q.LFA.S.NP..EDPI.LYLF..IFXEX...SUO.AP.CZP.JXPUS.W.D.WU...

result:

ok Correct.

Test #10:

score: 0
Accepted
time: 26ms
memory: 4704kb

input:

1000 1000
.SKFDQ.AV.GPTHMF.PL.YOQRQOXDOF.XVZ.H.MYOJIYT.QZNJQI.ZZMAJ.OAWBJBRXFW.CLEPPKGGAWGTVBKOBL.GPCO.ML.DBL.A.RJ..GF.EHK.CDXLLTCBCL.CGYJBMUSPIN.QELGYW.JE..CFVQF.LVYLFHYJ.MY.FZ.RU.ODLAYTWIZQOQZXBW.BVD.RFPLHLEHAU.G.PLFWFUKA.RSG..AVU.SA.PWRGJYO.OXD..S.Z.LIIADT.YXH..NHWXY.R.YFLS.URIJGPPURZPPVHJFLMKTDT...

output:

YES
S.FDQ.AV.GPTHMF.P..YOQRQOXD.F.XV.....YO.IYT.QZ.JQI.ZZMAJ.OAWBJBRX...C.EPP.GGAWGT.B..BL.GPCO.ML.D.L.A.R...GF.E.K.CDXLLT.BCL.CGYJB.USPIN..EL..W.J...CFVQ..LV.LFHYJ.MY.FZ.R..ODLAYTWIZQO.ZX.W...D.R..LHLE.A..G.PLFWFUKA.R.G..A...SA..WRGJ...OXD....Z.L.I.DT.Y.H..N.WXY.R.Y.LS..RI.G.PU.ZP.V..FLMKT.TWI.ZKHZ...

result:

ok Correct.

Test #11:

score: -100
Wrong Answer
time: 0ms
memory: 3604kb

input:

1 1000
.K.CCS...LC.....Y..J...E.W.B..Q..KQ...Q...L..U.XSWX..NB..K.OLF...Y.A....HG....RRQO..Y...J.LOS...IN..C......H......X.....B.B.PQRT....VB.........P...E....MF.E...RH.XADCQN.D.KT.W..XNI..PH.Q.L.H..G...ZJR.V.I.......O......J.X..N..QS......UN....HLS..Z..N....X.YH.W..E.Z..JHSAV......YXT.P..TX.WT.SHE....

output:

NO

result:

wrong answer Jury has answer but participant has not.