CSES - E4590 2018 5 - Results
Submission details
Task:Rotations
Sender:jong
Submission time:2018-10-13 15:58:07 +0300
Language:C++
Status:READY
Result:
Test results
testverdicttime
#1ACCEPTED0.06 sdetails
#2ACCEPTED0.05 sdetails
#3ACCEPTED0.03 sdetails
#4ACCEPTED0.01 sdetails
#50.03 sdetails
#6ACCEPTED0.06 sdetails
#7ACCEPTED0.06 sdetails
#8UNKNOWN--details
#9UNKNOWN--details
#10UNKNOWN--details
#11UNKNOWN--details
#12UNKNOWN--details

Code

#include <iostream>

using namespace std;

int main() {

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

	char min = -1;
	/*for (int i=0; i<n; ++i)
		if (min == -1 || s[i] < min) min = s[i];*/

	int level = 0;
	int left = n;
	int arr[n];
	for(int i=0; i<n; ++i)
		arr[i] = i;
	int arr_it = 0;
	while (left > 1 && level<(n+1)/2) {
		min = -1;
		arr_it = 0;
		for (int i=0; i<left; ++i) {
			if (min == -1 || s[(arr[i]+level) % n] < min) {
				min = s[(arr[i]+level) % n];
			}
		}
		for (int i=0; i<left; ++i) {
			if (s[(arr[i]+level) % n] == min) {
				arr[arr_it] = arr[i];
				++arr_it;
			}
		}
		if ((left+1)/2 < arr_it) {	// TODO: around! e.g. 'aabbaaabbaa'
			int maxs = 0;
			int maxsind = -1;
			int scount = 0;
			int currind = -1;

			for (int j=0; j<left; ++j) {
				if (s[(arr[j]+level) % n] == min) {
					++scount;
					if (scount > maxs) {
						if (currind == -1) currind = j;
						maxs = scount;
						maxsind = currind;
					}
				} else {
					scount = 0;
					currind = -1;
				}
			}
			cout << s.substr(arr[maxsind], n-arr[maxsind]) << s.substr(0,arr[0]) << "\n";
			return 0;
		}
		left = arr_it;
		++level;
	}

	/*cout << arr[0] << "\n";
	for (int i=0;i<n;++i)
		cout << arr[i] << " ";
	cout << "\n";*/
	/*for (int i=0; i<n; ++i)
		cout << s[(arr[0] + i) % n];
	cout << "\n";*/
	cout << s.substr(arr[0], n-arr[0]) << s.substr(0,arr[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:

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)