Submission details
Task:Bathhouse
Sender:aalto26dw_008
Submission time:2026-09-23 17:37:14 +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
#17ACCEPTED0.00 sdetails
#18ACCEPTED0.00 sdetails
#19ACCEPTED0.00 sdetails
#20ACCEPTED0.00 sdetails
#21ACCEPTED0.00 sdetails
#22ACCEPTED0.00 sdetails
#23ACCEPTED0.00 sdetails
#24ACCEPTED0.00 sdetails
#25ACCEPTED0.00 sdetails
#26ACCEPTED0.00 sdetails
#27ACCEPTED0.00 sdetails
#28ACCEPTED0.00 sdetails
#29ACCEPTED0.00 sdetails
#30ACCEPTED0.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.59 sdetails
#620.06 sdetails
#630.06 sdetails
#640.14 sdetails
#650.23 sdetails
#660.07 sdetails
#670.21 sdetails
#680.15 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;
        seen[curr-1] = 1;
        for (int j = 0; j < query; j++) {
            curr = p[curr-1];

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

            if(curr == cycle_from) {
                int moves = (query - j-1) % cycle_size;
                // printf("In %d with %d left (mod %d) with cycle_from %d of size %d\n", curr, query-j+1, moves, cycle_from, 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: ACCEPTED

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

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

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

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

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

Test 27

Verdict: ACCEPTED

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
10 1 9 9 1 7 1 1 6 10 9 10 8 6...

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

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

Test 30

Verdict: ACCEPTED

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

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
42 50 50 38 13 13 1 13 42 26 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
27 97 27 33 97 58 1 33 33 2 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
96 63 80 54 63 80 1 28 99 63 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
47 75 27 28 94 46 1 75 55 28 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
60 32 100 53 94 97 1 12 40 69 ...

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
81 90 12 11 90 46 1 70 11 97 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
96 58 20 12 49 69 1 69 93 77 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
75 8 93 97 1 19 1 80 16 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
22 23 23 97 19 22 1 22 19 45 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
143 165 88 149 165 88 1 159 58...

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 175 136 91 175 64 1 191 91...

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
76 146 146 60 200 200 1 200 76...

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 16 16 16 36 36 1 36 36 40 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
72 180 47 196 170 200 1 200 21...

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

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
93 62 48 158 93 189 1 8 93 8 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 157 176 112 157 116 1 112 ...

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
34 48 48 96 59 59 1 59 34 179 ...

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

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
433 210 674 132 87 799 1 301 3...

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
327 960 355 946 278 92 1 623 8...

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
396 909 227 957 35 659 1 634 9...

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
462 752 752 15 471 471 1 471 4...

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
347 861 96 57 861 551 1 820 36...

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
423 886 886 979 396 396 1 396 ...

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

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
417 238 417 228 558 791 1 228 ...

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
112 356 891 277 713 213 1 393 ...

Test 61

Verdict:

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

correct output
6989 36001 68282 32295 75083 5...

user output
40774 31868 66145 2925 89164 8...

Test 62

Verdict:

input
100000 100000
13228 17398 79610 18457 92126 ...

correct output
85422 34285 24843 40734 50094 ...

user output
41145 81820 44364 11739 67470 ...

Test 63

Verdict:

input
100000 100000
11080 55900 74628 73314 33646 ...

correct output
48679 3060 97205 31406 48488 7...

user output
88955 88758 4872 84092 58734 2...

Test 64

Verdict:

input
100000 100000
96918 48776 71938 59265 12094 ...

correct output
50083 27613 20102 27613 12216 ...

user output
27613 32510 20102 20102 27613 ...

Test 65

Verdict:

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

correct output
37517 7697 66294 35895 68112 4...

user output
8364 93256 9411 94630 78827 46...

Test 66

Verdict:

input
100000 100000
94335 18669 83747 67315 56026 ...

correct output
64204 74411 86031 20050 87068 ...

user output
80583 9984 77647 9776 12818 23...

Test 67

Verdict:

input
100000 100000
70439 82301 50793 35505 51484 ...

correct output
51403 83667 50017 91054 47448 ...

user output
17766 7050 29651 9801 83667 35...

Test 68

Verdict:

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

correct output
27290 75822 76263 59416 31480 ...

user output
8064 24881 73628 4176 77461 45...

Test 69

Verdict:

input
100000 100000
47136 94209 59915 78143 78636 ...

correct output
88634 32371 40082 48974 13288 ...

user output
90916 90405 8605 15230 70979 1...

Test 70

Verdict:

input
100000 100000
39437 57474 60243 20923 38668 ...

correct output
23653 50188 81237 25631 79750 ...

user output
41805 92378 66956 12377 96447 ...