Submission details
Task:Bathhouse
Sender:aalto26dw_008
Submission time:2026-09-23 17:24:00 +0300
Language:C
Status:READY
Result:
Test results
testverdicttime
#1ACCEPTED0.00 sdetails
#2ACCEPTED0.00 sdetails
#3ACCEPTED0.00 sdetails
#4ACCEPTED0.00 sdetails
#5ACCEPTED0.00 sdetails
#6ACCEPTED0.00 sdetails
#7ACCEPTED0.00 sdetails
#8ACCEPTED0.00 sdetails
#9ACCEPTED0.00 sdetails
#10ACCEPTED0.00 sdetails
#11ACCEPTED0.00 sdetails
#12ACCEPTED0.00 sdetails
#13ACCEPTED0.00 sdetails
#14ACCEPTED0.00 sdetails
#15ACCEPTED0.00 sdetails
#16ACCEPTED0.00 sdetails
#170.00 sdetails
#18ACCEPTED0.00 sdetails
#190.00 sdetails
#20ACCEPTED0.00 sdetails
#21ACCEPTED0.00 sdetails
#22ACCEPTED0.00 sdetails
#23ACCEPTED0.00 sdetails
#24ACCEPTED0.00 sdetails
#25ACCEPTED0.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.00 sdetails
#520.00 sdetails
#530.00 sdetails
#540.00 sdetails
#550.00 sdetails
#560.00 sdetails
#570.00 sdetails
#580.00 sdetails
#590.00 sdetails
#600.00 sdetails
#610.54 sdetails
#620.06 sdetails
#630.06 sdetails
#640.14 sdetails
#650.23 sdetails
#660.07 sdetails
#670.21 sdetails
#680.14 sdetails
#690.17 sdetails
#700.17 sdetails

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 && cycle_from == -1; j++)
            seen[j] = 0;
        for (int j = 0; j < query; 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 - j+1) % cycle_size;
                curr = find(cycle_from, moves);
                break;
            }
        }
        if(i == q-1) printf("%d", curr);
        else printf("%d ", 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: ACCEPTED

input
3 3
2 1 1 
7 2 7 

correct output
2 1 2 

user output
2 1 2

Test 6

Verdict: ACCEPTED

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
3 1 3 3 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: ACCEPTED

input
4 4
2 3 3 1 
10 3 9 12 

correct output
3 3 3 3 

user output
3 3 3 3

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 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 1 1 1 1 1 1

Test 11

Verdict: ACCEPTED

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
4 4 3 3 1 4 4 1 4 3 4

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 1 1 1 1

Test 13

Verdict: ACCEPTED

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 3 3 3 1 3 3 1 3

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 1 1 1 1 1 1

Test 15

Verdict: ACCEPTED

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 5 5 5 1 5 5 1 5 5 5 5 5 5 5

Test 16

Verdict: ACCEPTED

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 5 5 5 1 5 5

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
4 4 5 5 1 1 4 1 4 2 4 4 1 4

Test 18

Verdict: ACCEPTED

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

correct output
4 4 4 4 1 

user output
4 4 4 4 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
2 5 3 2 1 2 5 1 3 3 5 3 3 3

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: ACCEPTED

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 3 3 3 1 3 3 1 3 3 3 3 3 3 3 ...

Test 22

Verdict: ACCEPTED

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 3 3 3 1 3 3 1 3 3 3 3 3 3 3 ...

Test 23

Verdict: ACCEPTED

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 4 4 4 1 4 4 1 4 4 4 4 4 4 4 ...

Test 24

Verdict: ACCEPTED

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
1 3 1 3 1 1 3 1 1 1 1 3 1 1 1 ...

Test 25

Verdict: ACCEPTED

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 7 7 7 1 7 7 1 7 7 7 7 7 7 7 ...

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
8 9 1 7 1 8 9 1 8 1 8 7 8 8

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 1 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
38 26 26 94 50 50 1 50 38 13 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
97 58 97 27 58 30 1 27 27 95 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 80 72 22 80 72 1 63 54 80 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
56 55 38 46 28 47 1 55 61 46 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
10 28 41 40 32 100 1 90 84 17 ...

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
14 46 90 81 46 60 1 12 81 25 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
55 46 77 7 20 58 1 58 12 69 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
85 84 84 85 84 84 1 84 85 84 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
16 93 31 17 19 71 1 1 2 19 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
67 45 45 56 97 67 1 67 97 19 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 88 151 127 88 151 1 165 149...

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
139 64 175 117 64 79 1 136 117...

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 21 21 99 146 146 1 146 60 2...

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
16 40 40 40 16 16 1 16 16 36 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 153 153 114 153 153 1 153 ...

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
160 104 36 125 77 97 1 97 196 ...

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
103 107 13 103 107 13 1 13 57 ...

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
62 189 93 112 62 158 1 38 62 3...

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
157 116 157 176 116 111 1 176 ...

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
96 179 179 152 48 48 1 48 96 5...

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
238 233 739 238 233 739 1 739 ...

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
447 184 249 417 210 674 1 28 2...

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
28 483 960 789 92 781 1 224 52...

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
697 794 396 400 179 508 1 776 ...

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
15 117 117 835 752 752 1 752 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
155 551 280 886 551 749 1 602 ...

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 118 118 739 886 886 1 886 ...

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
162 873 130 162 873 130 1 130 ...

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
238 852 238 174 791 162 1 174 ...

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
941 230 157 625 681 703 1 476 ...

Test 61

Verdict:

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

correct output
6989 36001 68282 32295 75083 5...

user output
6157 98243 81752 87583 2673 34...

Test 62

Verdict:

input
100000 100000
13228 17398 79610 18457 92126 ...

correct output
85422 34285 24843 40734 50094 ...

user output
63328 27511 85422 12249 74760 ...

Test 63

Verdict:

input
100000 100000
11080 55900 74628 73314 33646 ...

correct output
48679 3060 97205 31406 48488 7...

user output
80015 81934 48679 91595 89479 ...

Test 64

Verdict:

input
100000 100000
96918 48776 71938 59265 12094 ...

correct output
50083 27613 20102 27613 12216 ...

user output
32510 12216 89930 89930 32510 ...

Test 65

Verdict:

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

correct output
37517 7697 66294 35895 68112 4...

user output
55177 75512 11273 17278 91098 ...

Test 66

Verdict:

input
100000 100000
94335 18669 83747 67315 56026 ...

correct output
64204 74411 86031 20050 87068 ...

user output
38397 20839 56753 30948 38683 ...

Test 67

Verdict:

input
100000 100000
70439 82301 50793 35505 51484 ...

correct output
51403 83667 50017 91054 47448 ...

user output
50688 75310 55377 24782 32516 ...

Test 68

Verdict:

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

correct output
27290 75822 76263 59416 31480 ...

user output
59135 2262 95362 68026 8064 25...

Test 69

Verdict:

input
100000 100000
47136 94209 59915 78143 78636 ...

correct output
88634 32371 40082 48974 13288 ...

user output
86444 61234 57003 74624 90855 ...

Test 70

Verdict:

input
100000 100000
39437 57474 60243 20923 38668 ...

correct output
23653 50188 81237 25631 79750 ...

user output
73948 79750 36410 71926 83641 ...