CSES - Harjoituskisa 7.1.2018 - Results
Submission details
Task:Ruudukko
Sender:Yytsi
Submission time:2018-01-07 21:08:15 +0200
Language:C++
Status:READY
Result:59
Feedback
groupverdictscore
#1ACCEPTED17
#2ACCEPTED42
#30
Test results
testverdicttimegroup
#1ACCEPTED0.04 s1details
#2ACCEPTED0.04 s1details
#3ACCEPTED0.06 s1details
#4ACCEPTED0.06 s1details
#5ACCEPTED0.05 s1details
#6ACCEPTED0.05 s2details
#7ACCEPTED0.04 s2details
#8ACCEPTED0.04 s2details
#9ACCEPTED0.04 s2details
#10ACCEPTED0.05 s2details
#11--3details
#12--3details
#13--3details
#14--3details
#15--3details

Code

#include <iostream>
#include <queue>
#include <utility>
#include <string>

using namespace std;
#define N 2501
char grid[N][N];
bool goingTo[N][N];
queue<pair<int, int>> q;
string best = "";
int n;

bool inRange(const pair<int,int> c) {
	return ((0 <= c.first) && (c.first < n)) && ((0 <= c.second) && (c.second < n));
}

void BFS() {
	// Start from (0, 0)
	q.push({0, 0});
	int moves = (n * n) - ((n - 1) * (n - 1));
	int m = 0;
	while (m != moves) {
		char bestR = '|';
		queue<pair<int,int>> s;
		while (!q.empty()) {
			pair<int,int>c=q.front();q.pop();s.push(c);
			char cur = grid[c.first][c.second];
			if (cur < bestR) bestR = cur;
		}
		while(!s.empty()) {
			pair<int,int>c=s.front();s.pop();
			char cur = grid[c.first][c.second];
			if (cur==bestR) {
				// This is a one, we should continue.
				pair<int,int>r={c.first,c.second+1};
				pair<int,int>d={c.first+1,c.second};
				if (inRange(r)) q.push(r);
				if (inRange(d)) q.push(d);
			}
		}
		best+=bestR;
		m++;
	}
}

int main(int argc, char** argv) {
	cin >> n; cin.ignore();
	for (int i = 0; i < n; i++) {
		string s; cin >> s; cin.ignore();
		for (int j = 0; j < n; j++) {
			grid[i][j] = s[j];
		}
	}
	BFS();
	cout << best;
	return 0;
}

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)