CSES - Harjoituskisa 7.1.2018 - Results
Submission details
Task:Ruudukko
Sender:Olli
Submission time:2018-01-07 20:31:58 +0200
Language:C++
Status:READY
Result:100
Feedback
groupverdictscore
#1ACCEPTED17
#2ACCEPTED42
#3ACCEPTED41
Test results
testverdicttimegroup
#1ACCEPTED0.04 s1details
#2ACCEPTED0.04 s1details
#3ACCEPTED0.04 s1details
#4ACCEPTED0.03 s1details
#5ACCEPTED0.04 s1details
#6ACCEPTED0.04 s2details
#7ACCEPTED0.06 s2details
#8ACCEPTED0.05 s2details
#9ACCEPTED0.04 s2details
#10ACCEPTED0.04 s2details
#11ACCEPTED0.33 s3details
#12ACCEPTED0.30 s3details
#13ACCEPTED0.28 s3details
#14ACCEPTED0.28 s3details
#15ACCEPTED0.27 s3details

Compiler report

input/code.cpp: In function 'int main()':
input/code.cpp:34:20: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
   for(int j = 0; j < best[sum - 1].size(); ++j) {
                    ^
input/code.cpp:57:20: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
   for(int j = 0; j < best[sum - 1].size(); ++j) {
                    ^

Code

#include <iostream>
#include <fstream>
#include <vector>
using namespace std;

const int N = 2525;

char board[N][N];

vector<pair<int, int> > best[2*N];

bool added[N][N];

int main() {
	//ifstream in;
	//in.open("input.in");
	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 curString = "";
	curString += board[1][1];
	best[2].push_back(make_pair(1, 1));

	for(int sum = 3; sum <= 2*n; ++sum) {
		int curBestNum = 99999;		
		for(int j = 0; j < best[sum - 1].size(); ++j) {
			int x = best[sum-1][j].second;
			int y = best[sum-1][j].first;

			if(x == n) {
				char abba = board[y+1][x];
				int cd = (int) abba;
				curBestNum = min(curBestNum, cd);
			} else if(y == n) {
				char abba = board[y][x+1];
				int cd = (int) abba;
				curBestNum = min(curBestNum, cd);
			} else {
				char abba = board[y+1][x];
				int cd = (int) abba;
				char aaaa = board[y][x+1];
				int bbbb = (int) aaaa;
				int cur = min(cd, bbbb);
				curBestNum = min(curBestNum, cur);
			}
		}
		char a = (int) curBestNum;
		curString += a;
		for(int j = 0; j < best[sum - 1].size(); ++j) {
			int x = best[sum-1][j].second;
			int y = best[sum-1][j].first;

			if(x == n) {
				char abba = board[y+1][x];
				int cd = (int) abba;
				if(cd == curBestNum &&	 !added[y+1][x]) {
					best[sum].push_back(make_pair(y+1, x));
					added[y+1][x] = true;
				}
			} else if(y == n) {
				char abba = board[y][x+1];
				int cd = (int) abba;
				if(cd == curBestNum && !added[y][x+1]) {
					best[sum].push_back(make_pair(y, x+1));
					added[y][x+1] = true;
				}
			} else {
				char abba = board[y+1][x];
				int cd = (int) abba;
				if(cd == curBestNum && !added[y+1][x]) {
					best[sum].push_back(make_pair(y+1, x));
					added[y+1][x] = true;
				}
				abba = board[y][x+1];
				cd = (int) abba;
				if(cd == curBestNum && !added[y][x+1]) {
					best[sum].push_back(make_pair(y, x+1));
					added[y][x+1] = true;
				}
			}
		}
	}

	cout << curString << "\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: ACCEPTED

input
2500
LKEFOYQTRZJHADSYBRGQCUDOPMGYOF...

correct output
LDHPNOFPFOCGKPNCEQKANCJCBLGDKC...

user output
LDHPNOFPFOCGKPNCEQKANCJCBLGDKC...

Test 12

Group: 3

Verdict: ACCEPTED

input
2500
UGPBLFMZGVIANZLHRTPJIHMUZWOXKA...

correct output
UGLSEBMGHSONFJBGOJJAGBJCLFAHAP...

user output
UGLSEBMGHSONFJBGOJJAGBJCLFAHAP...

Test 13

Group: 3

Verdict: ACCEPTED

input
2500
YRUOZBRTLLMMAHNIHQLZHBYCDHTHMS...

correct output
YELLJAAKETHCOWAJNDGJBOFNTCCEDA...

user output
YELLJAAKETHCOWAJNDGJBOFNTCCEDA...

Test 14

Group: 3

Verdict: ACCEPTED

input
2500
RXZEOTVYZBQUOJJFLCJCYCZDONBLUR...

correct output
RTDHUEBGLTKRHKIQLGKILATNHWPIBO...

user output
RTDHUEBGLTKRHKIQLGKILATNHWPIBO...

Test 15

Group: 3

Verdict: ACCEPTED

input
2500
IOTRAMNHKWWBVPQPPWTTBHOYDFXPOX...

correct output
IOTQTIDOBFMJBDNOFEFGGIBGAGQBIC...

user output
IOTQTIDOBFMJBDNOFEFGGIBGAGQBIC...