Task: | Period |
Sender: | natalia |
Submission time: | 2018-10-13 13:23:17 +0300 |
Language: | C++ |
Status: | READY |
Result: | ACCEPTED |
test | verdict | time | |
---|---|---|---|
#1 | ACCEPTED | 0.05 s | details |
#2 | ACCEPTED | 0.07 s | details |
#3 | ACCEPTED | 0.04 s | details |
#4 | ACCEPTED | 0.04 s | details |
#5 | ACCEPTED | 0.05 s | details |
#6 | ACCEPTED | 0.07 s | details |
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... |