Task: | Repeating substring |
Sender: | lautat |
Submission time: | 2018-10-13 14:30:08 +0300 |
Language: | C++ |
Status: | READY |
Result: | TIME LIMIT EXCEEDED |
test | verdict | time | |
---|---|---|---|
#1 | ACCEPTED | 0.02 s | details |
#2 | ACCEPTED | 0.02 s | details |
#3 | ACCEPTED | 0.04 s | details |
#4 | ACCEPTED | 0.06 s | details |
#5 | ACCEPTED | 0.05 s | details |
#6 | ACCEPTED | 0.05 s | details |
#7 | ACCEPTED | 0.05 s | details |
#8 | ACCEPTED | 0.04 s | details |
#9 | ACCEPTED | 0.05 s | details |
#10 | ACCEPTED | 0.05 s | details |
#11 | TIME LIMIT EXCEEDED | -- | details |
#12 | UNKNOWN | -- | details |
#13 | UNKNOWN | -- | details |
#14 | UNKNOWN | -- | details |
#15 | UNKNOWN | -- | details |
Compiler report
input/code.cpp: In function 'int main()': input/code.cpp:13:10: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result] scanf("%100001s", string); ~~~~~^~~~~~~~~~~~~~~~~~~~
Code
#include <algorithm> #include <cstddef> #include <cstdio> #include <cstring> #include <vector> using std::sort; using std::vector; int main() { char string[100002]; scanf("%100001s", string); const size_t n = strlen(string); vector<size_t> suffixes(n); for (size_t i = 0; i < n; i++) { suffixes[i] = i; } auto compare_suffixes = [&string](size_t a, size_t b) { return strcmp(&string[a], &string[b]) < 0; }; sort(suffixes.begin(), suffixes.end(), compare_suffixes); char* longest_prefix = string; size_t longest_prefix_length = 0; for (size_t i = 0; i + 1 < n; i++) { char* a = &string[suffixes[i]]; char* b = &string[suffixes[i + 1]]; size_t j = 0; for (; a[j] != 0 && b[j] != 0 && a[j] == b[j]; j++) { } if (j > longest_prefix_length) { longest_prefix = a; longest_prefix_length = j; } } longest_prefix[longest_prefix_length] = 0; printf("%s\n", longest_prefix); return 0; }
Test details
Test 1
Verdict: ACCEPTED
input |
---|
abcdabcdabcd |
correct output |
---|
abcdabcd |
user output |
---|
abcdabcd |
Test 2
Verdict: ACCEPTED
input |
---|
abcdefghijklmnopqrstuvwxyz |
correct output |
---|
(empty) |
user output |
---|
(empty) |
Test 3
Verdict: ACCEPTED
input |
---|
yypqtdfbwzpfwsmjjagdjpfyqnyspk... |
correct output |
---|
cqkgus |
user output |
---|
cqkgus |
Test 4
Verdict: ACCEPTED
input |
---|
zwnqhornqkcmioyxxtkkwrbkorncjh... |
correct output |
---|
dywyvkf |
user output |
---|
dywyvkf |
Test 5
Verdict: ACCEPTED
input |
---|
fhnnpfcbnpnsigmvmklzvfluwvypyb... |
correct output |
---|
asjzge |
user output |
---|
asjzge |
Test 6
Verdict: ACCEPTED
input |
---|
daqyvtkjopactcbkghijgrpjghmefa... |
correct output |
---|
sowvwyy |
user output |
---|
sowvwyy |
Test 7
Verdict: ACCEPTED
input |
---|
ksdohlhpsupwqhoditrhvbansccnnh... |
correct output |
---|
devycn |
user output |
---|
devycn |
Test 8
Verdict: ACCEPTED
input |
---|
edhikrxqidgjpxnyytsfzylndslhyu... |
correct output |
---|
brmnvr |
user output |
---|
brmnvr |
Test 9
Verdict: ACCEPTED
input |
---|
hutihnlmghdovkmbelctafdqhldiyl... |
correct output |
---|
bbzhpo |
user output |
---|
bbzhpo |
Test 10
Verdict: ACCEPTED
input |
---|
ttyameoijyqaxrkvfqkxgrwigmalxw... |
correct output |
---|
cbahwtz |
user output |
---|
cbahwtz |
Test 11
Verdict: TIME LIMIT EXCEEDED
input |
---|
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa... |
correct output |
---|
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa... |
user output |
---|
(empty) |
Test 12
Verdict: UNKNOWN
input |
---|
a |
correct output |
---|
(empty) |
user output |
---|
(not available) |
Test 13
Verdict: UNKNOWN
input |
---|
aa |
correct output |
---|
a |
user output |
---|
(not available) |
Test 14
Verdict: UNKNOWN
input |
---|
ab |
correct output |
---|
(empty) |
user output |
---|
(not available) |
Test 15
Verdict: UNKNOWN
input |
---|
zz |
correct output |
---|
z |
user output |
---|
(not available) |