CSES - Harjoituskisa 7.1.2018 - Results
Submission details
Task:Ruudukko
Sender:Olli
Submission time:2018-01-07 19:36:41 +0200
Language:C++
Status:READY
Result:59
Feedback
groupverdictscore
#1ACCEPTED17
#2ACCEPTED42
#30
Test results
testverdicttimegroup
#1ACCEPTED0.09 s1details
#2ACCEPTED0.09 s1details
#3ACCEPTED0.10 s1details
#4ACCEPTED0.09 s1details
#5ACCEPTED0.08 s1details
#6ACCEPTED0.10 s2details
#7ACCEPTED0.09 s2details
#8ACCEPTED0.09 s2details
#9ACCEPTED0.09 s2details
#10ACCEPTED0.10 s2details
#11--3details
#12--3details
#13--3details
#14--3details
#150.88 s3details

Code

#include <iostream>
#include <unordered_map>

using namespace std;

const int N = 2525;

string board[N][N];

unordered_map<int, string> m;

int isFirst(string a, string b) {
	
	int n = a.length();
	for(int i = 0; i < n; ++i) {
		int x = (int) a[i];
		int y = (int) b[i];
		if(x < y) {
			return 1;
		}
		if(x > y) {
			return 2;
		}
	}
	return 1;
}


int main() {
	int n;
	cin >> n;
	for(int y = 1; y <= n; ++y) {
		string s;
		cin >> s;
		for(int x = 0; x < n; ++x) {
			board[y][x+1] = s[x];
		}
	}	


	string s = "";
	s += board[1][1];
	m[1] = s;


	for(int sum = 3; sum <= 2*n; ++sum) {
		for(int y = 1; y < sum; ++y) {
			int x = sum - y;
			if(y > n || x > n) continue;
			if(y == 1) {
				m[x] = m[x-1] + board[1][x];
				continue;
			}
			if(x == 1) {
				m[n*(y-1) + 1] = m[n*(y-2) + 1] + board[y][1];
				continue;
			}

			string a = m[n*(y-1) + x - 1];
			string b = m[n*(y-2) + x];
			if(isFirst(a, b) == 1) {
				m[n*(y-1) + x] = a + board[y][x];
			} else {
				m[n*(y-1) + x] = b + board[y][x];
			}
		}

	}



	cout << m[n*n] << "\n";





}

Test details

Test 1

Group: 1

Verdict: ACCEPTED

input
5
ILRBG
SBRHV
PAGKM
YKKNG
...

correct output
ILBAGKMGQ

user output
ILBAGKMGQ

Test 2

Group: 1

Verdict: ACCEPTED

input
5
KQQBB
IWDQN
TENSD
PGXMV
...

correct output
KITEGMIWH

user output
KITEGMIWH

Test 3

Group: 1

Verdict: ACCEPTED

input
5
DSWIO
RWFDY
ISZRK
GBVYS
...

correct output
DRIGBJDLU

user output
DRIGBJDLU

Test 4

Group: 1

Verdict: ACCEPTED

input
5
VGQFP
FTISL
QCLYU
EYNZZ
...

correct output
VFQCLNRZP

user output
VFQCLNRZP

Test 5

Group: 1

Verdict: ACCEPTED

input
5
WCSNV
UWNDB
WDHZA
XGRBQ
...

correct output
WCSNDBAQW

user output
WCSNDBAQW

Test 6

Group: 2

Verdict: ACCEPTED

input
100
WFNOQZOAMZPHFRDYGXQNUPWVMFDNJF...

correct output
WFAHHJDEVFSGGOGMIFDEEDKPSHBBRX...

user output
WFAHHJDEVFSGGOGMIFDEEDKPSHBBRX...

Test 7

Group: 2

Verdict: ACCEPTED

input
100
UEOPTOSBCABXIPUOQRKWKMZRGRZUSS...

correct output
UEGHLIWDHDVKTECPACBJABFMBOASOF...

user output
UEGHLIWDHDVKTECPACBJABFMBOASOF...

Test 8

Group: 2

Verdict: ACCEPTED

input
100
XCKBHDFAPMFZNJANJUENHGXYBBHFJR...

correct output
XCCENJBCBUFBIOJOJDREIBGRUKVRQS...

user output
XCCENJBCBUFBIOJOJDREIBGRUKVRQS...

Test 9

Group: 2

Verdict: ACCEPTED

input
100
YEBXYYLVUDYIHNUMRCUTAYVTNLMEZL...

correct output
YDJNBALIRDOVFBKDDJDFNSSMIDMFRM...

user output
YDJNBALIRDOVFBKDDJDFNSSMIDMFRM...

Test 10

Group: 2

Verdict: ACCEPTED

input
100
MVONBCDHJUKRKDGPNYSYGRXBLZOMLD...

correct output
MMSJFIKBSFCUMBBLXJCOUIRAPOKEJS...

user output
MMSJFIKBSFCUMBBLXJCOUIRAPOKEJS...

Test 11

Group: 3

Verdict:

input
2500
LKEFOYQTRZJHADSYBRGQCUDOPMGYOF...

correct output
LDHPNOFPFOCGKPNCEQKANCJCBLGDKC...

user output
(empty)

Test 12

Group: 3

Verdict:

input
2500
UGPBLFMZGVIANZLHRTPJIHMUZWOXKA...

correct output
UGLSEBMGHSONFJBGOJJAGBJCLFAHAP...

user output
(empty)

Test 13

Group: 3

Verdict:

input
2500
YRUOZBRTLLMMAHNIHQLZHBYCDHTHMS...

correct output
YELLJAAKETHCOWAJNDGJBOFNTCCEDA...

user output
(empty)

Test 14

Group: 3

Verdict:

input
2500
RXZEOTVYZBQUOJJFLCJCYCZDONBLUR...

correct output
RTDHUEBGLTKRHKIQLGKILATNHWPIBO...

user output
(empty)

Test 15

Group: 3

Verdict:

input
2500
IOTRAMNHKWWBVPQPPWTTBHOYDFXPOX...

correct output
IOTQTIDOBFMJBDNOFEFGGIBGAGQBIC...

user output
(empty)