Submission details
Task:Rotations
Sender:kkivimaki
Submission time:2020-09-26 15:57:46 +0300
Language:C++ (C++11)
Status:READY
Result:
Test results
testverdicttime
#1--details
#2ACCEPTED0.09 sdetails
#30.02 sdetails
#40.01 sdetails
#50.40 sdetails
#6--details
#70.65 sdetails
#8ACCEPTED0.01 sdetails
#9ACCEPTED0.01 sdetails
#10ACCEPTED0.01 sdetails
#11ACCEPTED0.01 sdetails
#12--details

Compiler report

input/code.cpp: In function 'bool better(std::__cxx11::string, int, int)':
input/code.cpp:25:13: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
     while(k < s.size() && s[(i + k) % s.size()] == s[(j + k) % s.size()]) k++;
           ~~^~~~~~~~~~
input/code.cpp: In function 'int gen(int*, std::__cxx11::string)':
input/code.cpp:38:22: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
     for(int i = 0; i < s.size(); i++) {
                    ~~^~~~~~~~~~
input/code.cpp:31:9: warning: unused variable 'n' [-Wunused-variable]
     int n = s.size();
         ^
input/code.cpp: In function 'int main()':
input/code.cpp:62:26: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
         for(int i = 1; i < s.size(); i++)
                        ~~^~~~~~~~~~
input/code.cpp:72:22: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
     for(int i = 1; i < s....

Code

#include <vector>
#include <iostream>
#include <string>


using namespace std;

int sum(int *d) {
    int s = 0;
    for(int i = 0; i < 10; i++)  s+= d[i];
    return s;
}

void print(string s, int a) {
    int n = s.size();
    for(int i = a; i < n; i++)
        cout << s[i];
    for(int i = 0; i < a; i++)
        cout << s[i];
    cout << endl;
}

bool better(string s, int i, int j) {
    int k = 0;
    while(k < s.size() && s[(i + k) % s.size()] == s[(j + k) % s.size()]) k++; 
    return s[i] < s[j];
}

int gen(int *a, string s) {
    int min = 1 << 30;
    int n = s.size();
    int d[10];
    int t = 1;
    for(int i = 0; i < 10; i++) {
        d[9 - i] = s[9 - i]*t;
        t *= 10;
    }
    for(int i = 0; i < s.size(); i++) {
        int m = sum(d);

        a[i] = m;
        if(m < min) min = m;

        for(int j = 0; j < 9; j++) {
            d[j] = d[j + 1]*10;
        }
        d[9] = s[(i + 10) % s.size()];
    }

    return min;
}


int main() {
    string s;
    cin >> s;
    int n = s.size();


    if (n < 100) {
        int b = 0;
        for(int i = 1; i < s.size(); i++)
            if(better(s, i, b)) b = i;
        print(s, b);
        return 0;
    }

    int *hs = new int[s.size()];
    int m = gen(hs, s);

    int b = 0;
    for(int i = 1; i < s.size(); i++) {
        if(hs[i] != m) continue;
        if(better(s, i, b)) b = i;
    }
    print(s, b);
    return 0;

    return 0;
}

Test details

Test 1

Verdict:

input
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa...

correct output
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa...

user output
(empty)

Test 2

Verdict: ACCEPTED

input
bbbbbbbbbbbbbbbbbbbbbbbbbbbbbb...

correct output
abbbbbbbbbbbbbbbbbbbbbbbbbbbbb...

user output
abbbbbbbbbbbbbbbbbbbbbbbbbbbbb...
Truncated

Test 3

Verdict:

input
jibanqfglkmsywdlqjquxxnqeyhbyu...

correct output
aaadptqmkuqxnvmojzhghqtfztbwsj...

user output
jibanqfglkmsywdlqjquxxnqeyhbyu...
Truncated

Test 4

Verdict:

input
muykjgvsstkgydmumitbgvsbtgyvmv...

correct output
aaaeaeipiqglrtbzelgrqmrxqbnjke...

user output
aqmwsjhpilbmwbqzlpuyhvhxnfqwsn...
Truncated

Test 5

Verdict:

input
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa...

correct output
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa...

user output
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa...
Truncated

Test 6

Verdict:

input
aaaaaaaaabaaaaaaaaabaaaaaaaaab...

correct output
aaaaaaaaabaaaaaaaaabaaaaaaaaab...

user output
(empty)

Test 7

Verdict:

input
jtcbpjizbiauauipwsdteaisynwesj...

correct output
aisynwesjvtvgghnbqyqprwpfqayzl...

user output
jtcbpjizbiauauipwsdteaisynwesj...
Truncated

Test 8

Verdict: ACCEPTED

input
a

correct output
a

user output
a

Test 9

Verdict: ACCEPTED

input
ab

correct output
ab

user output
ab

Test 10

Verdict: ACCEPTED

input
ba

correct output
ab

user output
ab

Test 11

Verdict: ACCEPTED

input
home

correct output
ehom

user output
ehom

Test 12

Verdict:

input
baaaaaaaaaaaaaaaaaaaaaaaaaaaaa...

correct output
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa...

user output
(empty)