Submission details
Task:LibBot
Sender:aalto26bw_002
Submission time:2026-09-09 17:11:46 +0300
Language:C++ (C++20)
Status:READY
Result:
Test results
testverdicttime
#10.01 sdetails
#20.01 sdetails
#30.01 sdetails
#40.01 sdetails
#50.01 sdetails
#60.01 sdetails
#70.01 sdetails
#80.01 sdetails
#90.01 sdetails
#100.01 sdetails
#110.01 sdetails
#120.01 sdetails
#130.01 sdetails
#140.01 sdetails
#150.01 sdetails
#160.01 sdetails
#170.01 sdetails
#180.01 sdetails
#190.01 sdetails
#200.01 sdetails
#210.01 sdetails
#220.01 sdetails
#230.01 sdetails
#240.01 sdetails
#250.01 sdetails
#260.01 sdetails
#270.01 sdetails
#280.01 sdetails
#290.01 sdetails
#300.01 sdetails
#310.01 sdetails
#320.01 sdetails
#330.01 sdetails
#340.01 sdetails
#350.01 sdetails
#360.01 sdetails
#370.01 sdetails
#380.01 sdetails
#390.01 sdetails
#400.01 sdetails
#410.01 sdetails

Code

#include <iostream>
#include <vector>
#include <utility>
#include <algorithm>
#include <utility>
#include <queue>

int n;

struct Pos {
    int a;
    int b;
    int c;
    int d;
    int e;

    std::string to_string() {
        return std::to_string(a+1) + '.' + std::to_string(b+1) + '.' + std::to_string(c+1) + '.' + std::to_string(d+1) + '.' + std::to_string(e+1);
    }

    void from_string(std::string s) {
        a = atoi(s.substr(0, s.find('.')).c_str())-1;
        s.erase(0, s.find('.') + 1);
        b = atoi(s.substr(0, s.find('.')).c_str())-1;
        s.erase(0, s.find('.') + 1);
        c = atoi(s.substr(0, s.find('.')).c_str())-1;
        s.erase(0, s.find('.') + 1);
        d = atoi(s.substr(0, s.find('.')).c_str())-1;
        s.erase(0, s.find('.') + 1);
        e = atoi(s.c_str())-1;
    }

    static Pos find_middle(Pos &a, Pos &b) {
        Pos c;
        c.from_int((b.to_int() - a.to_int()) / 2);
        return c;
    }

    int to_int() {
        return e + d*n + c*n*n + b*n*n*n + a*n*n*n*n;
    }

    void from_int(int i) {
        e = i%n;
        d = (i/n)%n;
        c = (i/n/n)%n;
        b = (i/n/n/n)%n;
        a = (i/n/n/n/n)%n;
    }

    bool operator<(auto &rhs) {
        /*if (a < rhs.a) return true;
        if (a == rhs.a) {
            if (b < rhs.b) return true;
            if (b == rhs.b) {
                if (c < rhs.c) return true;
                if (c == rhs.c) {
                    if (d < rhs.d) return true;
                    if (d == rhs.d && e < rhs.e) return true;
                }
            }
        }
        return false;*/
        return to_int() < rhs.to_int();
    }
};

int main() {
    std::string trash;
    std::cin >> trash >> n;

    std::string title;
    std::cin >> trash >> title;

    Pos low = {0,0,0,0,0};
    Pos high = {n-1,n-1,n-1,n-1,n-1};
    Pos high2 = {n-1,n-1,n-1,n-1,n-1};
    Pos lowest = {n-1,n-1,n-1,n-1,n-1};
    Pos highest = {0,0,0,0,0};
    bool low_found = false;
    bool high_found = false;

    while (!low_found) {
        if (high < low) break;

        std::string name;
        Pos middle;
        middle = Pos::find_middle(low, high);
        std::cout << "FETCH " << middle.to_string() << std::endl << std::flush;
        std::cin >> trash >> name;

        if (name == title) {
            if (middle < lowest) lowest = middle;
            if (highest < middle) highest = middle;
            high = middle;
        }
        if (name < title) {
            low = middle;
            if (low.to_int()+1 >= lowest.to_int()) {
                low_found = true;
            }
        }
        if (title < name) {
            high = middle;
            high2 = middle;
        }
    }
    while (!low_found) {
        if (high < low) break;

        std::string name;
        Pos middle;
        middle = Pos::find_middle(low, high);
        std::cout << "FETCH " << middle.to_string() << std::endl << std::flush;
        std::cin >> trash >> name;

        if (name == title) {
            if (middle < lowest) lowest = middle;
            if (highest < middle) highest = middle;
            high = middle;
        }
        if (name < title) {
            low = middle;
            if (low.to_int()+1 >= lowest.to_int()) {
                low_found = true;
            }
        }
        if (title < name) {
            high = middle;
            high2 = middle;
        }
    }
    high = high2;
    low = highest;
    while (!high_found) {
        if (high < low) break;

        std::string name;
        Pos middle;
        middle = Pos::find_middle(low, high);
        std::cout << "FETCH " << middle.to_string() << std::endl << std::flush;
        std::cin >> trash >> name;

        if (name == title) {
            if (middle < lowest) lowest = middle;
            if (highest < middle) highest = middle;
            low = middle;
        }
        if (title < name) {
            high = middle;
            if (high.to_int()-1 >= highest.to_int()) {
                high_found = true;
            }
        }
    }

    int count = highest.to_int() - lowest.to_int() + 1;
    if (!low_found || !high_found) count = 0;
    std::cout << "GOT " << count << std::endl << std::flush; 
}

Test details

Test 1

Verdict:

input
2 9
kdg
dl 6
kdg 3
kdgwl 1
...

correct output
(empty)

user output
SIZE 2
COUNT kdg
FETCH 1.2.2.2.2
FOUND kdgyi
FETCH 1.1.2.2.2
...

Test 2

Verdict:

input
3 15
irwkfl
c 26
d 27
e 11
...

correct output
(empty)

user output
SIZE 3
COUNT irwkfl
FETCH 2.2.2.2.2
FOUND fuuics
FETCH 1.3.1.3.1
...

Test 3

Verdict:

input
4 34
gcnmkobrd
bcytu 60
bheb 64
bhebp 26
...

correct output
(empty)

user output
SIZE 4
COUNT gcnmkobrd
FETCH 2.4.4.4.4
FOUND h
FETCH 1.4.4.4.4
...

Test 4

Verdict:

input
5 52
faoluuicsn
a 1
cufqs 30
d 44
...

correct output
(empty)

user output
SIZE 5
COUNT faoluuicsn
FETCH 3.3.3.3.3
FOUND o
FETCH 2.2.2.2.2
...

Test 5

Verdict:

input
6 75
okokxlluuicsnw
a 1
b 51
bxcufq 145
...

correct output
(empty)

user output
SIZE 6
COUNT okokxlluuicsnw
FETCH 3.6.6.6.6
FOUND okhkxlluurcsnwcvbheipdry...

Test 6

Verdict:

input
7 105
jibgewnvmqnpbxvirxmgf
a 1
aqykhme 32
atusxwa 119
...

correct output
(empty)

user output
SIZE 7
COUNT jibgewnvmqnpbxvirxmgf
FETCH 4.4.4.4.4
FOUND n
FETCH 2.6.2.6.2
...

Test 7

Verdict:

input
8 124
djnofmgdbfj
afpc 66
apj 204
apjgsu 105
...

correct output
(empty)

user output
SIZE 8
COUNT djnofmgdbfj
FETCH 4.8.8.8.8
FOUND mdaecaalyy
FETCH 2.8.8.8.8
...

Test 8

Verdict:

input
9 166
qonvyqgibutxey
a 94
act 683
afngrwb 20
...

correct output
(empty)

user output
SIZE 9
COUNT qonvyqgibutxey
FETCH 5.5.5.5.5
FOUND ox
FETCH 3.3.3.3.3
...

Test 9

Verdict:

input
10 211
zuek
axof 303
axofdxjyeevjxifd 397
axofvxnleg 539
...

correct output
(empty)

user output
SIZE 10
COUNT zuek
FETCH 5.10.10.10.10
FOUND moh
FETCH 3.6.1.1.1
...

Test 10

Verdict:

input
10 216
hskapswvzfrbijqwgotkothu
aayuulyq 436
aayuulyqcs 205
aayuulyqcsgjqffbfix 530
...

correct output
(empty)

user output
SIZE 10
COUNT hskapswvzfrbijqwgotkothu
FETCH 5.10.10.10.10
FOUND jogii
FETCH 3.5.10.10.10
...

Test 11

Verdict:

input
9 158
ylhjecnhgyboje
a 691
acd 241
apkcczfzzxrpvlk 88
...

correct output
(empty)

user output
SIZE 9
COUNT ylhjecnhgyboje
FETCH 5.5.5.5.5
FOUND kxtjsyjajvusmj
FETCH 3.3.3.3.3
...

Test 12

Verdict:

input
8 133
ewcm
aavhwtselm 486
aavrwtsejm 170
aayuuly 62
...

correct output
(empty)

user output
SIZE 8
COUNT ewcm
FETCH 4.8.8.8.8
FOUND kjogxxxfyzbvtqxnmiok
FETCH 2.8.8.8.8
...

Test 13

Verdict:

input
7 98
jkpxbvb
awb 326
comccswxez 114
cw 42
...

correct output
(empty)

user output
SIZE 7
COUNT jkpxbvb
FETCH 4.4.4.4.4
FOUND lqsc
FETCH 2.6.2.6.2
...

Test 14

Verdict:

input
6 70
eaymki
alkio 119
alkioruv 72
alkioruvyivod 26
...

correct output
(empty)

user output
SIZE 6
COUNT eaymki
FETCH 3.6.6.6.6
FOUND lzftwy
FETCH 2.3.6.6.6
...

Test 15

Verdict:

input
4 28
unje
biybsjet 60
biybsjetnn 27
bx 45
...

correct output
(empty)

user output
SIZE 4
COUNT unje
FETCH 2.4.4.4.4
FOUND npghbml
FETCH 2.1.1.1.1
...

Test 16

Verdict:

input
9 159
ckfhsouqxvv
a 373
aahay 152
asvvihxxokcevotlncilqbuvhmdkmh...

correct output
(empty)

user output
SIZE 9
COUNT ckfhsouqxvv
FETCH 5.5.5.5.5
FOUND lk
FETCH 3.3.3.3.3
...

Test 17

Verdict:

input
8 117
h
aaha 262
anmuhfjbetlfzdbns 107
awhfbhdbjbuexgbwl 226
...

correct output
(empty)

user output
SIZE 8
COUNT h
FETCH 4.8.8.8.8
FOUND ns
FETCH 2.8.8.8.8
...

Test 18

Verdict:

input
7 106
m
aezpq 42
aokpn 7
aqfkfe 86
...

correct output
(empty)

user output
SIZE 7
COUNT m
FETCH 4.4.4.4.4
FOUND mljjsrvri
FETCH 2.6.2.6.2
...

Test 19

Verdict:

input
7 101
kvtwj
appvlr 240
bguzpylrzkwon 78
bofd 2
...

correct output
(empty)

user output
SIZE 7
COUNT kvtwj
FETCH 4.4.4.4.4
FOUND oekjahqd
FETCH 2.6.2.6.2
...

Test 20

Verdict:

input
2 9
fu
dl 6
kdg 3
kdgwl 1
...

correct output
(empty)

user output
SIZE 2
COUNT fu
FETCH 1.2.2.2.2
FOUND kdgyi
FETCH 1.1.2.2.2
...

Test 21

Verdict:

input
3 15
uvk
c 26
d 27
e 11
...

correct output
(empty)

user output
SIZE 3
COUNT uvk
FETCH 2.2.2.2.2
FOUND fuuics
FETCH 1.3.1.3.1
...

Test 22

Verdict:

input
4 34
jgtx
bcytu 60
bheb 64
bhebp 26
...

correct output
(empty)

user output
SIZE 4
COUNT jgtx
FETCH 2.4.4.4.4
FOUND h
FETCH 2.1.1.1.1
...

Test 23

Verdict:

input
5 52
ghmfq
a 1
cufqs 30
d 44
...

correct output
(empty)

user output
SIZE 5
COUNT ghmfq
FETCH 3.3.3.3.3
FOUND o
FETCH 2.2.2.2.2
...

Test 24

Verdict:

input
6 75
ojuphd
a 1
b 51
bxcufq 145
...

correct output
(empty)

user output
SIZE 6
COUNT ojuphd
FETCH 3.6.6.6.6
FOUND okhkxlluurcsnwcvbheipdry...

Test 25

Verdict:

input
7 105
kzzqfzz
a 1
aqykhme 32
atusxwa 119
...

correct output
(empty)

user output
SIZE 7
COUNT kzzqfzz
FETCH 4.4.4.4.4
FOUND n
FETCH 2.6.2.6.2
...

Test 26

Verdict:

input
8 124
emdxvwdw
afpc 66
apj 204
apjgsu 105
...

correct output
(empty)

user output
SIZE 8
COUNT emdxvwdw
FETCH 4.8.8.8.8
FOUND mdaecaalyy
FETCH 2.8.8.8.8
...

Test 27

Verdict:

input
9 166
pkhsbasuj
a 94
act 683
afngrwb 20
...

correct output
(empty)

user output
SIZE 9
COUNT pkhsbasuj
FETCH 5.5.5.5.5
FOUND ox
FETCH 3.3.3.3.3
...

Test 28

Verdict:

input
10 211
zypqadmqoo
axof 303
axofdxjyeevjxifd 397
axofvxnleg 539
...

correct output
(empty)

user output
SIZE 10
COUNT zypqadmqoo
FETCH 5.10.10.10.10
FOUND moh
FETCH 3.6.1.1.1
...

Test 29

Verdict:

input
10 216
jhagispreh
aayuulyq 436
aayuulyqcs 205
aayuulyqcsgjqffbfix 530
...

correct output
(empty)

user output
SIZE 10
COUNT jhagispreh
FETCH 5.10.10.10.10
FOUND jogii
FETCH 3.5.10.10.10
...

Test 30

Verdict:

input
9 158
zfkmqpzht
a 691
acd 241
apkcczfzzxrpvlk 88
...

correct output
(empty)

user output
SIZE 9
COUNT zfkmqpzht
FETCH 5.5.5.5.5
FOUND kxtjsyjajvusmj
FETCH 3.3.3.3.3
...

Test 31

Verdict:

input
8 133
dogiavnu
aavhwtselm 486
aavrwtsejm 170
aayuuly 62
...

correct output
(empty)

user output
SIZE 8
COUNT dogiavnu
FETCH 4.8.8.8.8
FOUND kjogxxxfyzbvtqxnmiok
FETCH 2.8.8.8.8
...

Test 32

Verdict:

input
7 98
kihqiff
awb 326
comccswxez 114
cw 42
...

correct output
(empty)

user output
SIZE 7
COUNT kihqiff
FETCH 4.4.4.4.4
FOUND lqsc
FETCH 2.6.2.6.2
...

Test 33

Verdict:

input
6 70
eszubi
alkio 119
alkioruv 72
alkioruvyivod 26
...

correct output
(empty)

user output
SIZE 6
COUNT eszubi
FETCH 3.6.6.6.6
FOUND lzftwy
FETCH 2.3.6.6.6
...

Test 34

Verdict:

input
4 28
vyta
biybsjet 60
biybsjetnn 27
bx 45
...

correct output
(empty)

user output
SIZE 4
COUNT vyta
FETCH 2.4.4.4.4
FOUND npghbml
FETCH 2.1.1.1.1
...

Test 35

Verdict:

input
9 159
ctohjykey
a 373
aahay 152
asvvihxxokcevotlncilqbuvhmdkmh...

correct output
(empty)

user output
SIZE 9
COUNT ctohjykey
FETCH 5.5.5.5.5
FOUND lk
FETCH 3.3.3.3.3
...

Test 36

Verdict:

input
8 117
igjxpndn
aaha 262
anmuhfjbetlfzdbns 107
awhfbhdbjbuexgbwl 226
...

correct output
(empty)

user output
SIZE 8
COUNT igjxpndn
FETCH 4.8.8.8.8
FOUND ns
FETCH 2.8.8.8.8
...

Test 37

Verdict:

input
7 106
lslhnht
aezpq 42
aokpn 7
aqfkfe 86
...

correct output
(empty)

user output
SIZE 7
COUNT lslhnht
FETCH 4.4.4.4.4
FOUND mljjsrvri
FETCH 2.6.2.6.2
...

Test 38

Verdict:

input
7 101
hxliesh
appvlr 240
bguzpylrzkwon 78
bofd 2
...

correct output
(empty)

user output
SIZE 7
COUNT hxliesh
FETCH 4.4.4.4.4
FOUND oekjahqd
FETCH 2.6.2.6.2
...

Test 39

Verdict:

input
2 1
fu
dl 32

correct output
(empty)

user output
SIZE 2
COUNT fu
FETCH 1.2.2.2.2
FOUND dl
FETCH 1.2.1.1.1
...

Test 40

Verdict:

input
3 1
fuuicsxvc
fuuicsxvc 243

correct output
(empty)

user output
SIZE 3
COUNT fuuicsxvc
FETCH 2.2.2.2.2
FOUND fuuicsxvc
FETCH 1.3.1.3.1
...

Test 41

Verdict:

input
4 1
bcytu
bcytu 1024

correct output
(empty)

user output
SIZE 4
COUNT bcytu
FETCH 2.4.4.4.4
FOUND bcytu
FETCH 1.4.4.4.4
...