CSES - E4590 2016 6 - Results
Submission details
Task:Period
Sender:omantere
Submission time:2016-10-24 18:02:51 +0300
Language:C++
Status:READY
Result:ACCEPTED
Test results
testverdicttime
#1ACCEPTED0.07 sdetails
#2ACCEPTED0.07 sdetails
#3ACCEPTED0.04 sdetails
#4ACCEPTED0.05 sdetails
#5ACCEPTED0.05 sdetails
#6ACCEPTED0.06 sdetails

Code

#include <bits/stdc++.h>

#define _ ios_base::sync_with_stdio(0);cin.tie();
#define ll long long
#define vi vector<int>
#define pb push_back
#define pii pair<int, int>
#define vpii vector<pii>
#define vvi vector< vector<int> >
#define si set<int>
#define mi map<string, int>

using namespace std;

int main() { _
    string s;
    cin >> s;
    int L = 0;
    int R = 0;
    int n = s.size();
    int z[n];
    if(n == 1) {
        cout << s[0] << endl;
        return 0;
    }
    for(int i = 0; i < n; i++) z[i] = 0;
    for (int i = 1; i < n; i++) {
        if (i > R) {
            L = R = i;
            while (R < n && s[R-L] == s[R]) R++;
            z[i] = R-L; R--;

        } else {
            int k = i-L;
            if (z[k] < R-i+1) z[i] = z[k];
            else {
                L = i;
                while (R < n && s[R-L] == s[R]) R++;
                z[i] = R-L; R--;
            }
        }
        if(n - i == z[i]) {
            cout << s.substr(0, i) << endl;
            return 0;
        }
    }    

    cout << s << endl;
    return 0;
}

Test details

Test 1

Verdict: ACCEPTED

input
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa...

correct output
a

user output
a

Test 2

Verdict: ACCEPTED

input
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa...

correct output
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa...

user output
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa...

Test 3

Verdict: ACCEPTED

input
nabvmrnenabvmrnenabvmrnenabvmr...

correct output
nabvmrne

user output
nabvmrne

Test 4

Verdict: ACCEPTED

input
fwqrbqnmobvwslpyfrlkrfwluaxyzk...

correct output
fwqrbqnmobvwslpyfrlkrfwluaxyzk...

user output
fwqrbqnmobvwslpyfrlkrfwluaxyzk...

Test 5

Verdict: ACCEPTED

input
ohicwwkhdoesqvsyemhdhubpvmqkre...

correct output
ohicwwkhdoesqvsyemhdhubpvmqkre...

user output
ohicwwkhdoesqvsyemhdhubpvmqkre...

Test 6

Verdict: ACCEPTED

input
gqzzocfzbuvfovbvamyflvcuuajzgu...

correct output
gqzzocfzbuvfovbvamyflvcuuajzgu...

user output
gqzzocfzbuvfovbvamyflvcuuajzgu...