Submission details
Task:Bathhouse
Sender:aalto26dw_008
Submission time:2026-09-23 17:08:34 +0300
Language:C
Status:READY
Result:
Test results
testverdicttime
#1ACCEPTED0.00 sdetails
#2ACCEPTED0.00 sdetails
#3ACCEPTED0.00 sdetails
#4ACCEPTED0.00 sdetails
#50.00 sdetails
#60.00 sdetails
#7ACCEPTED0.00 sdetails
#80.00 sdetails
#9ACCEPTED0.00 sdetails
#10ACCEPTED0.00 sdetails
#110.00 sdetails
#12ACCEPTED0.00 sdetails
#130.00 sdetails
#14ACCEPTED0.00 sdetails
#150.00 sdetails
#160.00 sdetails
#170.00 sdetails
#180.00 sdetails
#190.00 sdetails
#20ACCEPTED0.00 sdetails
#210.00 sdetails
#220.00 sdetails
#230.00 sdetails
#240.00 sdetails
#250.00 sdetails
#260.00 sdetails
#270.00 sdetails
#28ACCEPTED0.00 sdetails
#290.00 sdetails
#300.00 sdetails
#310.00 sdetails
#320.00 sdetails
#330.00 sdetails
#340.00 sdetails
#350.00 sdetails
#360.00 sdetails
#370.00 sdetails
#380.00 sdetails
#390.00 sdetails
#400.00 sdetails
#410.00 sdetails
#420.00 sdetails
#430.00 sdetails
#440.00 sdetails
#450.00 sdetails
#460.00 sdetails
#470.00 sdetails
#480.00 sdetails
#490.00 sdetails
#500.00 sdetails
#510.01 sdetails
#520.01 sdetails
#530.01 sdetails
#540.01 sdetails
#550.01 sdetails
#560.01 sdetails
#570.01 sdetails
#580.00 sdetails
#590.01 sdetails
#600.00 sdetails
#61--details
#62--details
#63--details
#64--details
#65--details
#66--details
#67--details
#68--details
#69--details
#70--details

Code

#include <stdio.h>
#include <stdlib.h>

#define MAX(X, Y) (((X) > (Y)) ? (X) : (Y))
#define MIN(X, Y) (((X) < (Y)) ? (X) : (Y))

void readInt(int *i) {
    if (scanf("%d", i) != 1)
        printf("Trouble reading int!\n");
}

void readIntArr(int *arr, int size) {
    for (int i = 0; i < size; i++)
        if (scanf("%d", &arr[i]) != 1)
            printf("Trouble reading int array!\n");
}

int n, q, *p, *seen, *queries;

int cycle_detection(int frm) {
    int size = 1;
    int c = p[frm-1];

    while(c!=frm) {
        c = p[c-1];
        size++;
    }
    return size;
}

int find(int frm, int mvs){
    int c = frm;
    for (int i = 0; i < mvs; i++) {
        c = p[c-1];
    }
    return c;
}

int main() {
    readInt(&n);
    readInt(&q);

    seen = calloc(n, sizeof(int));
    p = calloc(n, sizeof(int));
    readIntArr(p, n);
    queries = calloc(q, sizeof(int));
    readIntArr(queries, q);
    int cycle_size = -1;
    int cycle_from = -1;

    for (int i = 0; i < q; i++) {
        int curr = 1;
        int query = queries[i];
        for (int j = 0; j < n; j++)
            seen[j] = 0;
        for (int j = 0; j < query && cycle_from == -1; j++) {
            curr = p[curr-1];

            if(cycle_from == -1) {
                if (seen[curr] == 1) {
                    cycle_from = curr;
                    cycle_size = cycle_detection(curr);
                } else {
                    seen[curr] = 1;
                }
            }

            if(curr == cycle_from) {
                int moves = (query - i) % cycle_size;
                curr = find(cycle_from, moves);
                break;
            }
        }
        printf("%d\n", curr);
    }


    free(p);
    free(queries);
    return 0;
}

Test details

Test 1

Verdict: ACCEPTED

input
1 3
1 
3 1 2 

correct output
1 1 1 

user output
1
1
1

Test 2

Verdict: ACCEPTED

input
2 2
1 2 
5 1 

correct output
1 1 

user output
1
1

Test 3

Verdict: ACCEPTED

input
2 3
1 2 
5 1 4 

correct output
1 1 1 

user output
1
1
1

Test 4

Verdict: ACCEPTED

input
2 3
1 2 
5 1 4 

correct output
1 1 1 

user output
1
1
1

Test 5

Verdict:

input
3 3
2 1 1 
7 2 7 

correct output
2 1 2 

user output
1
1
1

Test 6

Verdict:

input
3 8
3 1 1 
7 2 7 9 0 4 2 0 

correct output
3 1 3 3 1 1 1 1 

user output
1
1
1
1
1
...

Test 7

Verdict: ACCEPTED

input
3 5
1 3 2 
7 2 7 9 0 

correct output
1 1 1 1 1 

user output
1
1
1
1
1

Test 8

Verdict:

input
4 4
2 3 3 1 
10 3 9 12 

correct output
3 3 3 3 

user output
3
1
1
1

Test 9

Verdict: ACCEPTED

input
4 7
1 3 3 3 
10 3 9 12 0 5 3 

correct output
1 1 1 1 1 1 1 

user output
1
1
1
1
1
...

Test 10

Verdict: ACCEPTED

input
4 11
1 4 1 2 
10 3 9 12 0 5 3 0 6 4 3 

correct output
1 1 1 1 1 1 1 1 1 1 1 

user output
1
1
1
1
1
...

Test 11

Verdict:

input
5 11
3 3 4 3 3 
12 4 11 15 0 6 4 0 8 5 4 

correct output
4 4 3 3 1 4 4 1 4 3 4 

user output
3
1
1
1
1
...

Test 12

Verdict: ACCEPTED

input
5 9
1 1 4 3 2 
12 4 11 15 0 6 4 0 8 

correct output
1 1 1 1 1 1 1 1 1 

user output
1
1
1
1
1
...

Test 13

Verdict:

input
5 9
2 3 3 2 3 
12 4 11 15 0 6 4 0 8 

correct output
3 3 3 3 1 3 3 1 3 

user output
3
1
1
1
1
...

Test 14

Verdict: ACCEPTED

input
5 11
1 1 5 2 5 
12 4 11 15 0 6 4 0 8 5 4 

correct output
1 1 1 1 1 1 1 1 1 1 1 

user output
1
1
1
1
1
...

Test 15

Verdict:

input
5 15
5 2 4 3 5 
12 4 11 15 0 6 4 0 8 5 4 8 2 8...

correct output
5 5 5 5 1 5 5 1 5 5 5 5 5 5 5 

user output
5
1
1
1
1
...

Test 16

Verdict:

input
5 7
3 4 5 4 5 
12 4 11 15 0 6 4 

correct output
5 5 5 5 1 5 5 

user output
5
1
1
1
1
...

Test 17

Verdict:

input
5 14
5 1 3 2 4 
12 4 11 15 0 6 4 0 8 5 4 8 2 8...

correct output
1 1 2 2 1 4 1 1 1 5 1 1 4 1 

user output
5
1
1
1
1
...

Test 18

Verdict:

input
5 5
5 3 4 4 3 
12 4 11 15 0 

correct output
4 4 4 4 1 

user output
4
1
1
1
1

Test 19

Verdict:

input
5 14
3 5 2 4 3 
12 4 11 15 0 6 4 0 8 5 4 8 2 8...

correct output
5 3 2 5 1 5 3 1 2 2 3 2 2 2 

user output
3
1
1
1
1
...

Test 20

Verdict: ACCEPTED

input
5 5
1 1 4 3 2 
12 4 11 15 0 

correct output
1 1 1 1 1 

user output
1
1
1
1
1

Test 21

Verdict:

input
10 21
4 8 3 3 4 2 7 10 3 1 
24 7 22 29 0 12 7 0 16 10 8 17...

correct output
3 3 3 3 1 3 3 1 3 3 3 3 3 3 3 ...

user output
3
1
1
1
1
...

Test 22

Verdict:

input
10 18
3 4 3 4 5 1 4 7 2 9 
24 7 22 29 0 12 7 0 16 10 8 17...

correct output
3 3 3 3 1 3 3 1 3 3 3 3 3 3 3 ...

user output
3
1
1
1
1
...

Test 23

Verdict:

input
10 19
4 1 2 4 5 10 7 6 9 3 
24 7 22 29 0 12 7 0 16 10 8 17...

correct output
4 4 4 4 1 4 4 1 4 4 4 4 4 4 4 ...

user output
4
1
1
1
1
...

Test 24

Verdict:

input
10 21
3 1 1 2 1 1 3 4 5 8 
24 7 22 29 0 12 7 0 16 10 8 17...

correct output
1 3 1 3 1 1 3 1 1 1 1 3 1 1 1 ...

user output
3
1
1
1
1
...

Test 25

Verdict:

input
10 30
3 1 7 2 10 6 7 7 7 2 
24 7 22 29 0 12 7 0 16 10 8 17...

correct output
7 7 7 7 1 7 7 1 7 7 7 7 7 7 7 ...

user output
7
1
1
1
1
...

Test 26

Verdict:

input
10 14
9 3 5 9 9 4 1 7 8 4 
24 7 22 29 0 12 7 0 16 10 8 17...

correct output
1 7 8 9 1 1 7 1 1 8 1 9 1 1 

user output
9
1
1
1
1
...

Test 27

Verdict:

input
10 28
9 4 1 4 2 10 3 7 6 8 
24 7 22 29 0 12 7 0 16 10 8 17...

correct output
10 1 9 9 1 7 1 1 6 10 9 10 8 6...

user output
(empty)

Error:
free(): invalid pointer

Test 28

Verdict: ACCEPTED

input
10 11
1 5 5 7 1 3 6 2 9 5 
24 7 22 29 0 12 7 0 16 10 8 

correct output
1 1 1 1 1 1 1 1 1 1 1 

user output
1
1
1
1
1
...

Test 29

Verdict:

input
10 28
5 6 9 10 9 5 7 2 4 9 
24 7 22 29 0 12 7 0 16 10 8 17...

correct output
4 10 10 9 1 4 10 1 10 10 9 9 1...

user output
(empty)

Error:
free(): invalid pointer

Test 30

Verdict:

input
10 10
10 4 1 8 4 5 1 7 2 9 
24 7 22 29 0 12 7 0 16 10 

correct output
2 1 10 10 1 8 1 1 9 2 

user output
(empty)

Error:
free(): invalid pointer

Test 31

Verdict:

input
100 210
14 74 92 58 7 98 86 25 60 70 5...

correct output
42 13 50 42 26 26 26 50 94 13 ...

user output
94
1
1
1
1
...

Test 32

Verdict:

input
100 183
53 97 95 2 54 17 95 63 2 91 6 ...

correct output
58 95 97 95 58 97 33 58 30 30 ...

user output
58
1
1
1
1
...

Test 33

Verdict:

input
100 187
74 58 2 29 82 83 47 100 91 35 ...

correct output
96 63 80 54 63 80 72 28 99 63 ...

user output
99
1
1
1
1
...

Test 34

Verdict:

input
100 210
26 63 66 33 58 41 21 46 19 8 7...

correct output
38 47 27 28 75 47 75 8 55 8 75...

user output
28
1
1
1
1
...

Test 35

Verdict:

input
100 294
74 81 21 85 28 25 8 99 43 90 2...

correct output
87 41 32 95 28 12 12 32 84 9 1...

user output
55
1
1
1
1
...

Test 36

Verdict:

input
100 144
99 85 10 97 5 58 26 92 95 97 6...

correct output
41 25 90 59 46 90 70 46 48 60 ...

user output
86
1
1
1
1
...

Test 37

Verdict:

input
100 279
93 92 21 40 79 40 20 7 65 16 3...

correct output
96 49 20 96 77 46 77 20 7 49 6...

user output
77
1
1
1
1
...

Test 38

Verdict:

input
100 115
33 75 25 88 30 21 6 11 28 70 4...

correct output
85 84 84 85 84 84 84 84 85 84 ...

user output
84
1
1
1
1
...

Test 39

Verdict:

input
100 275
42 1 7 71 56 79 81 17 60 23 52...

correct output
75 8 93 97 1 19 71 80 16 1 93 ...

user output
31
1
1
1
1
...

Test 40

Verdict:

input
100 102
76 86 4 54 65 98 12 3 65 23 99...

correct output
19 14 67 19 45 56 56 67 45 14 ...

user output
37
1
1
1
1
...

Test 41

Verdict:

input
200 420
14 63 135 70 7 59 198 180 108 ...

correct output
143 165 88 149 165 88 151 159 ...

user output
58
1
1
1
1
...

Test 42

Verdict:

input
200 367
92 55 151 199 107 153 113 22 1...

correct output
55 2 175 111 64 175 191 64 187...

user output
117
1
1
1
1
...

Test 43

Verdict:

input
200 374
87 142 156 80 82 95 57 100 122...

correct output
76 200 146 76 21 21 21 146 99 ...

user output
60
1
1
1
1
...

Test 44

Verdict:

input
200 420
148 63 188 153 10 175 180 129 ...

correct output
36 36 16 36 40 40 40 16 40 36 ...

user output
36
1
1
1
1
...

Test 45

Verdict:

input
200 587
70 81 153 52 154 41 101 197 47...

correct output
114 153 153 114 153 153 153 15...

user output
114
1
1
1
1
...

Test 46

Verdict:

input
200 289
175 162 119 135 5 84 180 193 8...

correct output
121 86 58 121 36 193 60 58 19 ...

user output
180
1
1
1
1
...

Test 47

Verdict:

input
200 558
185 92 21 164 74 113 14 7 105 ...

correct output
57 13 107 57 13 107 13 107 103...

user output
107
1
1
1
1
...

Test 48

Verdict:

input
200 230
160 75 25 34 30 21 6 62 146 70...

correct output
119 189 8 44 44 162 44 30 44 1...

user output
158
1
1
1
1
...

Test 49

Verdict:

input
200 550
42 57 2 119 56 14 142 191 60 4...

correct output
116 118 157 118 116 157 112 11...

user output
176
1
1
1
1
...

Test 50

Verdict:

input
200 204
30 86 162 36 29 12 145 195 134...

correct output
34 59 48 34 179 179 179 48 152...

user output
179
1
1
1
1
...

Test 51

Verdict:

input
1000 2098
934 30 933 998 498 379 198 40 ...

correct output
960 739 233 960 739 233 739 23...

user output
233
1
1
1
1
...

Test 52

Verdict:

input
1000 1834
999 646 500 189 865 410 433 60...

correct output
885 885 210 58 184 417 417 210...

user output
752
1
1
1
1
...

Test 53

Verdict:

input
1000 1872
505 849 714 811 82 503 751 709...

correct output
756 71 278 989 483 874 967 286...

user output
226
1
1
1
1
...

Test 54

Verdict:

input
1000 2102
960 913 723 153 863 296 956 46...

correct output
877 788 969 53 961 844 889 95 ...

user output
375
1
1
1
1
...

Test 55

Verdict:

input
1000 2935
254 975 564 356 133 485 340 30...

correct output
462 471 752 462 117 117 117 75...

user output
471
1
1
1
1
...

Test 56

Verdict:

input
1000 1444
919 660 119 789 842 648 604 11...

correct output
272 308 541 741 744 541 404 83...

user output
234
1
1
1
1
...

Test 57

Verdict:

input
1000 2786
925 970 421 164 995 689 783 21...

correct output
423 396 886 423 118 118 118 88...

user output
979
1
1
1
1
...

Test 58

Verdict:

input
1000 1152
155 242 735 833 912 180 639 80...

correct output
547 130 873 547 130 873 130 87...

user output
130
1
1
1
1
...

Test 59

Verdict:

input
1000 2747
565 852 547 211 925 244 335 32...

correct output
965 581 558 581 852 484 224 61...

user output
247
1
1
1
1
...

Test 60

Verdict:

input
1000 1020
821 625 397 588 289 372 469 30...

correct output
491 891 784 116 698 287 711 52...

user output
907
1
1
1
1
...

Test 61

Verdict:

input
100000 100000
26990 68204 21904 3028 29287 1...

correct output
6989 36001 68282 32295 75083 5...

user output
(empty)

Test 62

Verdict:

input
100000 100000
13228 17398 79610 18457 92126 ...

correct output
85422 34285 24843 40734 50094 ...

user output
(empty)

Test 63

Verdict:

input
100000 100000
11080 55900 74628 73314 33646 ...

correct output
48679 3060 97205 31406 48488 7...

user output
(empty)

Test 64

Verdict:

input
100000 100000
96918 48776 71938 59265 12094 ...

correct output
50083 27613 20102 27613 12216 ...

user output
(empty)

Test 65

Verdict:

input
100000 100000
861 54027 8497 56549 74351 180...

correct output
37517 7697 66294 35895 68112 4...

user output
(empty)

Test 66

Verdict:

input
100000 100000
94335 18669 83747 67315 56026 ...

correct output
64204 74411 86031 20050 87068 ...

user output
(empty)

Test 67

Verdict:

input
100000 100000
70439 82301 50793 35505 51484 ...

correct output
51403 83667 50017 91054 47448 ...

user output
(empty)

Test 68

Verdict:

input
100000 100000
1658 37819 55518 34140 46481 2...

correct output
27290 75822 76263 59416 31480 ...

user output
(empty)

Test 69

Verdict:

input
100000 100000
47136 94209 59915 78143 78636 ...

correct output
88634 32371 40082 48974 13288 ...

user output
(empty)

Test 70

Verdict:

input
100000 100000
39437 57474 60243 20923 38668 ...

correct output
23653 50188 81237 25631 79750 ...

user output
(empty)