CSES - E4590 2018 5 - Results
Submission details
Task:Family chronicle
Sender:lautat
Submission time:2018-10-13 15:49:51 +0300
Language:C++
Status:READY
Result:ACCEPTED
Test results
testverdicttime
#1ACCEPTED0.02 sdetails
#2ACCEPTED0.01 sdetails
#3ACCEPTED0.02 sdetails
#4ACCEPTED0.02 sdetails
#5ACCEPTED0.01 sdetails
#6ACCEPTED0.02 sdetails
#7ACCEPTED0.02 sdetails
#8ACCEPTED0.01 sdetails
#9ACCEPTED0.02 sdetails
#10ACCEPTED0.01 sdetails
#11ACCEPTED0.02 sdetails
#12ACCEPTED0.02 sdetails
#13ACCEPTED0.02 sdetails
#14ACCEPTED0.01 sdetails
#15ACCEPTED0.03 sdetails
#16ACCEPTED0.02 sdetails
#17ACCEPTED0.06 sdetails
#18ACCEPTED0.02 sdetails
#19ACCEPTED0.06 sdetails
#20ACCEPTED0.10 sdetails
#21ACCEPTED0.02 sdetails
#22ACCEPTED0.16 sdetails
#23ACCEPTED0.10 sdetails
#24ACCEPTED0.05 sdetails
#25ACCEPTED0.03 sdetails
#26ACCEPTED0.03 sdetails
#27ACCEPTED0.09 sdetails
#28ACCEPTED0.05 sdetails
#29ACCEPTED0.02 sdetails
#30ACCEPTED0.02 sdetails
#31ACCEPTED0.04 sdetails
#32ACCEPTED0.03 sdetails
#33ACCEPTED0.01 sdetails
#34ACCEPTED0.04 sdetails
#35ACCEPTED0.06 sdetails
#36ACCEPTED0.02 sdetails
#37ACCEPTED0.02 sdetails
#38ACCEPTED0.08 sdetails
#39ACCEPTED0.07 sdetails
#40ACCEPTED0.02 sdetails

Compiler report

input/code.cpp: In function 'int main()':
input/code.cpp:42:10: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
     scanf("%50001s %u", chronicle, &n);
     ~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
input/code.cpp:46:14: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
         scanf(" %50001s ", name);
         ~~~~~^~~~~~~~~~~~~~~~~~~

Code

#include <cstdint>
#include <cstddef>
#include <cstdio>
#include <cstring>
#include <vector>

using std::vector;

#define A 101


bool contains(char* string, char* pattern) {
    uint64_t h_pattern = 0;
    uint64_t h_string = 0;

    vector<uint64_t> multipliers(1, 1);

    size_t i = 0;
    for (; pattern[i] != 0; i++) {
        h_pattern = h_pattern * A + pattern[i];
        h_string = h_string * A + string[i];
        multipliers.push_back(multipliers.back() * A);
    }

    for (size_t j = 0; string[j + i - 1] != 0; j++) {
        if (h_string == h_pattern && strncmp(&string[j], pattern, i) == 0) {
            return true;
        }

        h_string = h_string * A - string[j] * multipliers[i] + string[j + i];
    }

    return false;
}


int main() {
    char chronicle[50001];
    char name[50001];

    uint32_t n;
    scanf("%50001s %u", chronicle, &n);
    const size_t chronicle_length = strlen(chronicle);

    for (uint32_t i = 0; i < n; i++) {
        scanf(" %50001s ", name);
        const size_t name_length = strlen(name);

        if (name_length <= chronicle_length && contains(chronicle, name)) {
            printf("YES\n");
        } else {
            printf("NO\n");
        }
    }

    return 0;
}

Test details

Test 1

Verdict: ACCEPTED

input
NOLLFDD
4
D
F
GD
...

correct output
YES
YES
NO
YES

user output
YES
YES
NO
YES

Test 2

Verdict: ACCEPTED

input
NLHIJHFLL
4
LH
IJX
U
...

correct output
YES
NO
NO
NO

user output
YES
NO
NO
NO

Test 3

Verdict: ACCEPTED

input
KMLZVXCDAAK
5
CDAA
MAZ
DA
...

correct output
YES
NO
YES
NO
YES

user output
YES
NO
YES
NO
YES

Test 4

Verdict: ACCEPTED

input
YSKBJNAQNAXDCJ
6
C
YJKB
KC
...

correct output
YES
NO
NO
YES
YES
...

user output
YES
NO
NO
YES
YES
...

Test 5

Verdict: ACCEPTED

input
SUNSZYCIPNOKBKYOSH
6
KEK
ZQC
E
...

correct output
NO
NO
NO
YES
NO
...

user output
NO
NO
NO
YES
NO
...

Test 6

Verdict: ACCEPTED

input
PEEKYVCXKPRDFBIQBCMOOD
6
Z
I
WK
...

correct output
NO
YES
NO
YES
NO
...

user output
NO
YES
NO
YES
NO
...

Test 7

Verdict: ACCEPTED

input
WFFFWXFWFFXXXFWXWWWFWWFFWFFFWF...

correct output
YES
YES
NO
YES

user output
YES
YES
NO
YES

Test 8

Verdict: ACCEPTED

input
MMWTJEOANERJSZVWPTHGUPBVEIXFUH...

correct output
YES
YES
YES
NO
YES
...

user output
YES
YES
YES
NO
YES
...

Test 9

Verdict: ACCEPTED

input
SXSXXXXXXXXXXXXXSXXXXXXXXXXXXX...

correct output
YES
YES
YES
YES
YES

user output
YES
YES
YES
YES
YES

Test 10

Verdict: ACCEPTED

input
EWLWHMLGWWLBOZNDUOANXGJUDTFUVJ...

correct output
YES
NO
YES
YES
YES
...

user output
YES
NO
YES
YES
YES
...

Test 11

Verdict: ACCEPTED

input
RRPPRRPPPPPRRPPPPPPPPPPRPRRRPP...

correct output
YES
YES
YES
YES
YES
...

user output
YES
YES
YES
YES
YES
...

Test 12

Verdict: ACCEPTED

input
ZWPOBWAZUUXXOHBHAPPLOOBAHZWPGO...

correct output
NO
YES
NO
NO
YES
...

user output
NO
YES
NO
NO
YES
...

Test 13

Verdict: ACCEPTED

input
KQOANBJEFBYZKANIJUCUXAUEPKJFGO...

correct output
YES
NO
YES
YES
NO
...

user output
YES
NO
YES
YES
NO
...

Test 14

Verdict: ACCEPTED

input
KLEFLAALELPKWAPEKKKAPLAEFEKATL...

correct output
NO
YES
YES
YES
YES
...

user output
NO
YES
YES
YES
YES
...

Test 15

Verdict: ACCEPTED

input
ZKGGKUKKKGKGGKUGUUKKGUGGKUOKGG...

correct output
YES
YES
YES
YES
YES
...

user output
YES
YES
YES
YES
YES
...

Test 16

Verdict: ACCEPTED

input
RRRRRRRRRRRVRQRRQRRRRRRRRQRRRR...

correct output
YES
YES
YES
YES
YES
...

user output
YES
YES
YES
YES
YES
...

Test 17

Verdict: ACCEPTED

input
OYWWPKKSYYCEHRWIKSKSEDPDBABIOF...

correct output
YES
YES
YES
NO
YES
...

user output
YES
YES
YES
NO
YES
...

Test 18

Verdict: ACCEPTED

input
CCCCCCCCCCCCCCCCCCCCCCCCCCCCCC...

correct output
YES
YES
YES
YES
YES
...

user output
YES
YES
YES
YES
YES
...

Test 19

Verdict: ACCEPTED

input
GGGGGGWGWGGWWGWGWGWWGWWWGWGGGW...

correct output
YES
YES
YES
YES
YES
...

user output
YES
YES
YES
YES
YES
...

Test 20

Verdict: ACCEPTED

input
QVQQQVBVQBVQQVIVIVQVQQBQQQBQQV...

correct output
YES
YES
YES
YES
YES
...

user output
YES
YES
YES
YES
YES
...

Test 21

Verdict: ACCEPTED

input
STUZEDPGLJKQXBPYTQVKDXSVZAOYPO...

correct output
YES
NO
NO
NO
NO
...

user output
YES
NO
NO
NO
NO
...

Test 22

Verdict: ACCEPTED

input
ZTJZMZMMJDJMMTMJNZDGJDJJMGTNZM...

correct output
NO
NO
NO
YES
NO
...

user output
NO
NO
NO
YES
NO
...

Test 23

Verdict: ACCEPTED

input
JJTJJTTJTJTJTJTJTTTTTJTJJJTTTT...

correct output
YES
YES
YES
YES
NO
...

user output
YES
YES
YES
YES
NO
...

Test 24

Verdict: ACCEPTED

input
QLQQLQQLQQQQQLQLQLLLQQQQLLLLLL...

correct output
YES
NO
YES
YES
YES
...

user output
YES
NO
YES
YES
YES
...

Test 25

Verdict: ACCEPTED

input
EECBCBBECECBBBCEBEECBCCCECEBBC...

correct output
YES
YES
NO
NO
YES
...

user output
YES
YES
NO
NO
YES
...

Test 26

Verdict: ACCEPTED

input
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX...

correct output
YES
YES
YES
YES
YES
...

user output
YES
YES
YES
YES
YES
...

Test 27

Verdict: ACCEPTED

input
GYUIJZOSVBNNHBJFZXJCTAGYHEOEYI...

correct output
YES
YES
YES
YES
NO
...

user output
YES
YES
YES
YES
NO
...

Test 28

Verdict: ACCEPTED

input
PKMQQIWPQNFJFTBCLAMSMAZHLIQOKK...

correct output
YES
NO
YES
YES
NO
...

user output
YES
NO
YES
YES
NO
...

Test 29

Verdict: ACCEPTED

input
UCYZBQRZDPTDFDICDCVZPDCUPGYZZF...

correct output
YES
YES
YES
NO
YES
...

user output
YES
YES
YES
NO
YES
...

Test 30

Verdict: ACCEPTED

input
PPPPPPPPPPPPPPPPPPPPPPPPPDPPDP...

correct output
YES
YES
YES
YES
YES
...

user output
YES
YES
YES
YES
YES
...

Test 31

Verdict: ACCEPTED

input
EEENNEEEENNNNEENENNNEENENEEENE...

correct output
YES
NO
YES
YES
YES
...

user output
YES
NO
YES
YES
YES
...

Test 32

Verdict: ACCEPTED

input
FWVMCMYKALJMZEQPKUCRTUGDNUJOHB...

correct output
NO
YES
NO
YES
YES
...

user output
NO
YES
NO
YES
YES
...

Test 33

Verdict: ACCEPTED

input
UUUUUUUUUUUUUUUUUUUUHUUUUUUUUU...

correct output
YES
YES
YES
YES
YES
...

user output
YES
YES
YES
YES
YES
...

Test 34

Verdict: ACCEPTED

input
IIIIOIIIFIIIIIIIOOIIIIOOIIIFII...

correct output
NO
NO
YES
NO
YES
...

user output
NO
NO
YES
NO
YES
...

Test 35

Verdict: ACCEPTED

input
PPIPUIBPIIXUCICPIUCIOPXUXIIIUX...

correct output
YES
NO
YES
NO
YES
...

user output
YES
NO
YES
NO
YES
...

Test 36

Verdict: ACCEPTED

input
AYYYYAYAAAAAJAAAWAAYAYAYIAWYYY...

correct output
YES
YES
NO
YES
YES
...

user output
YES
YES
NO
YES
YES
...

Test 37

Verdict: ACCEPTED

input
AAAEAANNANEAEAEAPEAAAAAEAAAEAA...

correct output
NO
NO
YES
NO
YES
...

user output
NO
NO
YES
NO
YES
...

Test 38

Verdict: ACCEPTED

input
PPPPLKPTKZPZPKGPPKZKPPPPPLPPSP...

correct output
YES
YES
YES
YES
YES
...

user output
YES
YES
YES
YES
YES
...

Test 39

Verdict: ACCEPTED

input
AAOOOOAAOOAAOOAOOOOAAOAAAAAAAO...

correct output
YES
NO
YES
YES
YES
...

user output
YES
NO
YES
YES
YES
...

Test 40

Verdict: ACCEPTED

input
QSCCSWNRLLTWPQCGJSZCLPJJVUXJJR...

correct output
YES
YES
YES
YES
NO
...

user output
YES
YES
YES
YES
NO
...