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

Code

#include <iostream>
#include <string>

void z_array(std::string data, int* result, const int n){
	result[0] = -1;

	int x = 0, y = 0;
	for(int i = 1; i < n; i++){
		result[i] = 0;
		//std::cout << "i=" << i << " x=" << x << " y=" << y << " result[" << i - x << "]=" << result[i - x] << " (y - i + 1)=" << y - i + 1 << "\n";
		result[i] = std::max(0, std::min(result[i - x], y - i + 1));
		while(i + result[i] < n && data[result[i]] == data[i + result[i]]){
			x = i; 
			y = i + result[i];
			result[i]++;
		}
	}
}

int main(){
	std::string str;
	std::cin >> str;

	const int n = str.length();
	int* result = (int*)malloc(n * sizeof(int));

	z_array(str, result, n);

	/*
	for(int i = 0; i < n; i++){
		std::cout << result[i] << "\t";
	}
	std::cout << "\n";
	std::cout << "n=" << n << "\n";
	*/

	int r = n;
	for(int i = 0; i < n; i++){
		if(i + result[i] == n){
			r = i;
			break;
		}
	}

	//std::cout << "r=" << r << "\n";

	for(int i = 0; i < r; i++){
		std::cout << str[i];
	}

	std::cout << "\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...