CSES - E4590 2018 5 - Results
Submission details
Task:Rotations
Sender:jong
Submission time:2018-10-24 21:25:13 +0300
Language:C++
Status:READY
Result:ACCEPTED
Test results
testverdicttime
#1ACCEPTED0.06 sdetails
#2ACCEPTED0.04 sdetails
#3ACCEPTED0.03 sdetails
#4ACCEPTED0.02 sdetails
#5ACCEPTED0.03 sdetails
#6ACCEPTED0.08 sdetails
#7ACCEPTED0.06 sdetails
#8UNKNOWN--details
#9UNKNOWN--details
#10UNKNOWN--details
#11UNKNOWN--details
#12UNKNOWN--details

Code

#include <iostream>
#include <algorithm>

using namespace std;

#define _a(_i) (s[(c[_i] + level) % n])

int main() {
	ios::sync_with_stdio(0);
	cin.tie(0);

	string s;
	cin >> s;
	int n = s.length();

	bool isCand[n];
	int c[n];
	for (int i=0; i<n; ++i) {
		isCand[i] = true;
		c[i] = i;
	}

	int cands = n;
	int level = 0;
	int c_it;

	while (cands > 1) {
		c_it = 0;
		char min = _a(0);
		for (int i=0; i<cands; ++i) {
			if (_a(i) < min) min = _a(i);
			//isCand[c[i]] = false;
			if (level > 0) isCand[(c[i] + level) % n] = false;
		}
		//cout << min << "\n";

		for (int i=0; i<cands; ++i) {
			//cout << "_" << _a(i) << "\n";
			if (isCand[c[i]] && _a(i) == min) {
				c[c_it] = c[i];
				++c_it;
				//cout << "__" << c[i] << "\n";
			} else {
				isCand[c[i]] = false;
			}
		}
		cands = c_it;
		++level;
	}
	//cout << c[0] << " " << c[1] << " " << c[2] << " " << c[3] << "\n";

	cout << s.substr(c[0], n-c[0]) << s.substr(0,c[0]) << "\n";
	
}

Test details

Test 1

Verdict: ACCEPTED

input
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa...

correct output
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa...

user output
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa...

Test 2

Verdict: ACCEPTED

input
bbbbbbbbbbbbbbbbbbbbbbbbbbbbbb...

correct output
abbbbbbbbbbbbbbbbbbbbbbbbbbbbb...

user output
abbbbbbbbbbbbbbbbbbbbbbbbbbbbb...

Test 3

Verdict: ACCEPTED

input
jibanqfglkmsywdlqjquxxnqeyhbyu...

correct output
aaadptqmkuqxnvmojzhghqtfztbwsj...

user output
aaadptqmkuqxnvmojzhghqtfztbwsj...

Test 4

Verdict: ACCEPTED

input
muykjgvsstkgydmumitbgvsbtgyvmv...

correct output
aaaeaeipiqglrtbzelgrqmrxqbnjke...

user output
aaaeaeipiqglrtbzelgrqmrxqbnjke...

Test 5

Verdict: ACCEPTED

input
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa...

correct output
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa...

user output
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa...

Test 6

Verdict: ACCEPTED

input
aaaaaaaaabaaaaaaaaabaaaaaaaaab...

correct output
aaaaaaaaabaaaaaaaaabaaaaaaaaab...

user output
aaaaaaaaabaaaaaaaaabaaaaaaaaab...

Test 7

Verdict: ACCEPTED

input
jtcbpjizbiauauipwsdteaisynwesj...

correct output
aisynwesjvtvgghnbqyqprwpfqayzl...

user output
aisynwesjvtvgghnbqyqprwpfqayzl...

Test 8

Verdict: UNKNOWN

input
a

correct output
a

user output
(not available)

Test 9

Verdict: UNKNOWN

input
ab

correct output
ab

user output
(not available)

Test 10

Verdict: UNKNOWN

input
ba

correct output
ab

user output
(not available)

Test 11

Verdict: UNKNOWN

input
home

correct output
ehom

user output
(not available)

Test 12

Verdict: UNKNOWN

input
baaaaaaaaaaaaaaaaaaaaaaaaaaaaa...

correct output
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa...

user output
(not available)