CSES - E4590 2018 5 - Results
Submission details
Task:Period
Sender:Pohjantahti
Submission time:2018-10-13 14:04:07 +0300
Language:C++
Status:READY
Result:ACCEPTED
Test results
testverdicttime
#1ACCEPTED0.03 sdetails
#2ACCEPTED0.03 sdetails
#3ACCEPTED0.03 sdetails
#4ACCEPTED0.03 sdetails
#5ACCEPTED0.04 sdetails
#6ACCEPTED0.06 sdetails

Code

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

using namespace std;

string s;
int n;

vector<int> zalg(string cs) {
	int cn = cs.length();
	vector<int> z(cn);
	int x = 0, y = 0;
	for (int i = 1; i < n; ++i) {
		z[i] = max(0, min(z[i-x], y-i+1));
		while (i+z[i] < cn && cs[z[i]] == cs[i+z[i]]) {
			x = i;
			y = i+z[i];
			z[i]++;
		}
	}
	return z;
}

int main() {
	ios_base::sync_with_stdio(false);
	cin.tie(0);
	cin >> s;
	n = s.length();
	vector<int> z = zalg(s);
	for (int i = 0; i < n; ++i) {
		int rem = n-i;
		if (z[i] == rem) {
			for (int j = 0; j < i; ++j) {
				cout << s[j];
			}
			cout << "\n";
			return 0;
		}
	}
	cout << s << "\n";
	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...