CSES - E4590 2018 5 - Results
Submission details
Task:Repeating substring
Sender:lautat
Submission time:2018-10-13 14:30:08 +0300
Language:C++
Status:READY
Result:
Test results
testverdicttime
#1ACCEPTED0.02 sdetails
#2ACCEPTED0.02 sdetails
#3ACCEPTED0.04 sdetails
#4ACCEPTED0.06 sdetails
#5ACCEPTED0.05 sdetails
#6ACCEPTED0.05 sdetails
#7ACCEPTED0.05 sdetails
#8ACCEPTED0.04 sdetails
#9ACCEPTED0.05 sdetails
#10ACCEPTED0.05 sdetails
#11--details
#12UNKNOWN--details
#13UNKNOWN--details
#14UNKNOWN--details
#15UNKNOWN--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:

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)