CSES - Leirikisa 9.12.2021 - Results
Submission details
Task:Ruudukko
Sender:Anttono
Submission time:2021-12-09 14:37:27 +0200
Language:C++ (C++11)
Status:READY
Result:0
Feedback
groupverdictscore
#10
#20
#30
Test results
testverdicttimegroup
#1ACCEPTED0.01 s1details
#2ACCEPTED0.01 s1details
#30.01 s1details
#40.01 s1details
#50.01 s1details
#6ACCEPTED0.01 s2details
#7ACCEPTED0.01 s2details
#80.01 s2details
#90.01 s2details
#100.01 s2details
#11--3details
#12ACCEPTED0.85 s3details
#130.03 s3details
#140.03 s3details
#150.03 s3details

Code

#include <bits/stdc++.h>

using namespace std;

const int N = 501;

int n;
string m[N];
int r[N][N];
// 1 = start
// 2 = x-1
// 3 = y-1

int main()
{
    cin>>n;
    string s;
    for(int i=0;i<n;i++)
    {
        cin>>s;
        m[i] = s;
    }
    for(int x=0;x<n;x++)
    {
        for(int y=0;y<n;y++)
        {
            if(x==0 && y==0) r[x][y] = 1;
            else if(x==0) r[x][y] = 3;
            else if(y==0) r[x][y] = 2;
            else
            {
                pair<int,int> lpos;
                lpos.first = x-1;
                lpos.second = y;
                pair<int,int> upos;
                upos.first = x;
                upos.second = y-1;
                while(m[lpos.first][lpos.second] == m[upos.first][upos.second])
                {
                    if(lpos.first==0 && lpos.second==0 && upos.first==0 && upos.second==0) break;

                    int x = 3 - r[lpos.first][lpos.second];
                    int y = r[lpos.first][lpos.second] - 2;
                    lpos.first -= x;
                    lpos.second -= y;

                    x = 3 - r[upos.first][upos.second];
                    y = r[upos.first][upos.second] - 2;
                    upos.first -= x;
                    upos.second -= y;
                }
                if(m[lpos.first][lpos.second] < m[upos.first][upos.second]) r[x][y] = 2;
                else r[x][y] = 3;
            }
        }
    }
    int x = n-1;
    int y = n-1;
    string result = "";
    while(x>=0 && y>=0)
    {
        result += m[x][y];
        int xc = 3 - r[x][y];
        int yc = r[x][y] - 2;
        x -= xc;
        y -= yc;
    }
    reverse(result.begin(), result.end());
    cout<<result;
}

Test details

Test 1

Group: 1

Verdict: ACCEPTED

input
5
AAAAA
AAAAA
AAAAA
AAAAA
...

correct output
AAAAAAAAB

user output
AAAAAAAAB

Test 2

Group: 1

Verdict: ACCEPTED

input
5
ABABA
BABAB
ABABA
BABAB
...

correct output
ABABABABA

user output
ABABABABA

Test 3

Group: 1

Verdict:

input
5
WRYIU
TWLKH
UJMJC
GRDJW
...

correct output
WRWJMDJWK

user output
WRYIKHCWK

Test 4

Group: 1

Verdict:

input
5
RUEAE
ZYHHW
KDBPD
DXREW
...

correct output
RUEAEWDWX

user output
RZKDBPEGX

Test 5

Group: 1

Verdict:

input
5
SRGYR
MYDOB
GNOVM
SZOZK
...

correct output
SMGNOOLTU

user output
SRGDOBMKU

Test 6

Group: 2

Verdict: ACCEPTED

input
100
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAA...

correct output
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAA...

user output
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAA...
Truncated

Test 7

Group: 2

Verdict: ACCEPTED

input
100
ABABABABABABABABABABABABABABAB...

correct output
ABABABABABABABABABABABABABABAB...

user output
ABABABABABABABABABABABABABABAB...
Truncated

Test 8

Group: 2

Verdict:

input
100
FWOVNYKNMMQCNHJGUYPNEDXGVVGONC...

correct output
FWDBDECKBHKIACOVUCJGDJOHAYIBHO...

user output
FWDBDECKBKFIAECTUCJGOAOHAYIDHI...
Truncated

Test 9

Group: 2

Verdict:

input
100
ETGCJABWKMAAEOQXWFFYMDJBMNKMQK...

correct output
EAARGLBRLHCDHHBPABHDAJBEEBHQBE...

user output
EAARGLYSIHQCMBJHCAEGCIHOFKDNPF...
Truncated

Test 10

Group: 2

Verdict:

input
100
GNWMLJNHSBAADUFCSGIZMWHZTVDHNR...

correct output
GEGOFRDKBNLLEUOPOEQCEFMTKANLNC...

user output
GEGXCGEDKFKFJODBEGHKFLFBLNKDDH...
Truncated

Test 11

Group: 3

Verdict:

input
500
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAA...

correct output
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAA...

user output
(empty)

Test 12

Group: 3

Verdict: ACCEPTED

input
500
ABABABABABABABABABABABABABABAB...

correct output
ABABABABABABABABABABABABABABAB...

user output
ABABABABABABABABABABABABABABAB...
Truncated

Test 13

Group: 3

Verdict:

input
500
HGADXTSFXYIEMDWMFIVQGHTACFUPYI...

correct output
HGADEJOGAKPJCRAHTABRSDLAVGBFAG...

user output
HGADXTSFXYIEMDWMFIVQGHTACFUPYI...
Truncated

Test 14

Group: 3

Verdict:

input
500
SBLNMAZESQVGWAPZYHQJMQTNGMEZWS...

correct output
SBLCAMDHILGIDRCIDUNMMAHFYCENOS...

user output
SETUPPBFFFARKBIYAQKNUIJDOHKVTR...
Truncated

Test 15

Group: 3

Verdict:

input
500
AOXYXRYFWPYWQDPWXQITLHQQUAYZAJ...

correct output
AOJLDOAPBGEKSGCNKBUMKAJCCWCOOD...

user output
AQLXKNXBCPVGVFCNKBUMODDQKENDDH...
Truncated