Submission details
Task:Period
Sender:omantere
Submission time:2016-10-22 13:43:56 +0300
Language:C++
Status:READY
Result:
Test results
testverdicttime
#1ACCEPTED0.03 sdetails
#20.07 sdetails
#30.05 sdetails
#40.04 sdetails
#50.06 sdetails
#60.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;
    int p = 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(z[i] >= p) {
            p = z[i];
        }
        else if(z[i] != 0) {
            p -= z[i];
            break;
        }
    }    
    cout << s.substr(0, p) << endl;

    return 0;
}

Test details

Test 1

Verdict: ACCEPTED

input
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa...

correct output
a

user output
a

Test 2

Verdict:

input
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa...

correct output
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa...

user output
a

Test 3

Verdict:

input
nabvmrnenabvmrnenabvmrnenabvmr...

correct output
nabvmrne

user output
nabvmrnenabvmrnenabvmrnenabvmr...

Test 4

Verdict:

input
fwqrbqnmobvwslpyfrlkrfwluaxyzk...

correct output
fwqrbqnmobvwslpyfrlkrfwluaxyzk...

user output
f

Test 5

Verdict:

input
ohicwwkhdoesqvsyemhdhubpvmqkre...

correct output
ohicwwkhdoesqvsyemhdhubpvmqkre...

user output
o

Test 6

Verdict:

input
gqzzocfzbuvfovbvamyflvcuuajzgu...

correct output
gqzzocfzbuvfovbvamyflvcuuajzgu...

user output
g