CSES - Aalto Competitive Programming 2024 - wk4 - Wed - Results
Submission details
Task:Bathhouse
Sender:aalto2024d_003
Submission time:2024-09-25 16:27:15 +0300
Language:C++ (C++17)
Status:READY
Result:ACCEPTED
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.01 sdetails
#12ACCEPTED0.00 sdetails
#13ACCEPTED0.00 sdetails
#14ACCEPTED0.00 sdetails
#15ACCEPTED0.00 sdetails
#16ACCEPTED0.00 sdetails
#17ACCEPTED0.00 sdetails
#18ACCEPTED0.00 sdetails
#19ACCEPTED0.01 sdetails
#20ACCEPTED0.01 sdetails
#21ACCEPTED0.00 sdetails
#22ACCEPTED0.01 sdetails
#23ACCEPTED0.00 sdetails
#24ACCEPTED0.00 sdetails
#25ACCEPTED0.00 sdetails
#26ACCEPTED0.00 sdetails
#27ACCEPTED0.00 sdetails
#28ACCEPTED0.00 sdetails
#29ACCEPTED0.01 sdetails
#30ACCEPTED0.00 sdetails
#31ACCEPTED0.00 sdetails
#32ACCEPTED0.00 sdetails
#33ACCEPTED0.00 sdetails
#34ACCEPTED0.00 sdetails
#35ACCEPTED0.00 sdetails
#36ACCEPTED0.01 sdetails
#37ACCEPTED0.00 sdetails
#38ACCEPTED0.00 sdetails
#39ACCEPTED0.01 sdetails
#40ACCEPTED0.00 sdetails
#41ACCEPTED0.00 sdetails
#42ACCEPTED0.00 sdetails
#43ACCEPTED0.01 sdetails
#44ACCEPTED0.00 sdetails
#45ACCEPTED0.01 sdetails
#46ACCEPTED0.01 sdetails
#47ACCEPTED0.01 sdetails
#48ACCEPTED0.00 sdetails
#49ACCEPTED0.01 sdetails
#50ACCEPTED0.00 sdetails
#51ACCEPTED0.01 sdetails
#52ACCEPTED0.01 sdetails
#53ACCEPTED0.01 sdetails
#54ACCEPTED0.01 sdetails
#55ACCEPTED0.01 sdetails
#56ACCEPTED0.01 sdetails
#57ACCEPTED0.01 sdetails
#58ACCEPTED0.01 sdetails
#59ACCEPTED0.01 sdetails
#60ACCEPTED0.01 sdetails
#61ACCEPTED0.04 sdetails
#62ACCEPTED0.04 sdetails
#63ACCEPTED0.04 sdetails
#64ACCEPTED0.04 sdetails
#65ACCEPTED0.04 sdetails
#66ACCEPTED0.04 sdetails
#67ACCEPTED0.04 sdetails
#68ACCEPTED0.04 sdetails
#69ACCEPTED0.04 sdetails
#70ACCEPTED0.04 sdetails

Code

// ~/.vim/cpp_template.cpp
#include <bits/stdc++.h>
#include <iostream>
#include <vector>
#include <algorithm>
#include <string>

#define REP(i,a,b) for (int i = a; i < b; i++)

// Type Aliases for 1D and 2D vectors with initialization
#define vi(n, val) vector<int>(n, val) // 1D vector of ints with size n, initialized to val
#define vll(n, val) vector<long long>(n, val) // 1D vector of long longs with size n, initialized to val
#define ll long long
#define vvi(n, m, val) vector<vector<int>>(n, vector<int>(m, val)) // 2D vector of ints (n x m), initialized to val
#define vvll(n, m, val) vector<vector<long long>>(n, vector<long long>(m, val)) // 2D vector of long longs (n x m), initialized to val


using namespace std;

template <typename T>
void pV(const std::vector<T>& vec, const std::string& label = "Vector") {
    std::cout << label << ": [ ";
    for (const auto& elem : vec) {
        std::cout << elem << " ";
    }
    std::cout << "]" << std::endl;
}


using namespace std;


void dfs(int s, vector<bool> *visited, vector<int> (*adj)[]) {
    if ((*visited)[s]) return;
    (*visited)[s] = true;
    // process node s


    for (auto u: (*adj)[s]) {
        dfs(u, visited, adj);
    }
}
/*
vector<int> adj[N];                                                          
vector<bool> visited(N, false);
int u, v;
for(int i = 0; i < M;i++){
    cin >> u >> v;
    u--;
    v--;
    adj[u].push_back(v);
    adj[v].push_back(u);
}
*/

int main() {
    ios::sync_with_stdio(0);
    cin.tie(0);

    long long n, q;
    cin >> n >> q;
    vector<long long> vals(n, 0);
    REP(i, 0, n){
        cin >> vals[i];
        vals[i]--;
    }


    vector<long long> res(1e5,0);
    set<long long> s;
    long long mod = -1;
    long long cstart = -1;
    long long pointer = 0;
    REP(i, 0, 1e5){
        res[i] = pointer;
        if(mod == -1 && cstart == -1){
            if(s.count(pointer)){
                REP(j, 0, i+1){
                    if(res[j] == pointer){
                        cstart = j;
                        break;
                    }
                }
                mod = i-cstart;
            } else{
                s.insert(pointer);
            }
        }
        pointer = vals[pointer];
    }

    REP(i, 0, q){
        long long temp;
        cin >> temp;
        if(temp >= cstart){
            temp = (temp - cstart) % mod + cstart;
        }
        cout << res[temp]+1 << ' ';
    }
    cout << endl;

    
    
    return 0;
}


Test details

Test 1

Verdict: ACCEPTED

input
1 3

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

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 13 50 42 26 26 26 50 94 13 ...
Truncated

Test 32

Verdict: ACCEPTED

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 95 97 95 58 97 33 58 30 30 ...
Truncated

Test 33

Verdict: ACCEPTED

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 72 28 99 63 ...
Truncated

Test 34

Verdict: ACCEPTED

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
38 47 27 28 75 47 75 8 55 8 75...
Truncated

Test 35

Verdict: ACCEPTED

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
87 41 32 95 28 12 12 32 84 9 1...
Truncated

Test 36

Verdict: ACCEPTED

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
41 25 90 59 46 90 70 46 48 60 ...
Truncated

Test 37

Verdict: ACCEPTED

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 49 20 96 77 46 77 20 7 49 6...
Truncated

Test 38

Verdict: ACCEPTED

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 84 84 85 84 ...
Truncated

Test 39

Verdict: ACCEPTED

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 71 80 16 1 93 ...
Truncated

Test 40

Verdict: ACCEPTED

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
19 14 67 19 45 56 56 67 45 14 ...
Truncated

Test 41

Verdict: ACCEPTED

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 151 159 ...
Truncated

Test 42

Verdict: ACCEPTED

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
55 2 175 111 64 175 191 64 187...
Truncated

Test 43

Verdict: ACCEPTED

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 200 146 76 21 21 21 146 99 ...
Truncated

Test 44

Verdict: ACCEPTED

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 36 16 36 40 40 40 16 40 36 ...
Truncated

Test 45

Verdict: ACCEPTED

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 153 15...
Truncated

Test 46

Verdict: ACCEPTED

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
121 86 58 121 36 193 60 58 19 ...
Truncated

Test 47

Verdict: ACCEPTED

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

Test 48

Verdict: ACCEPTED

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
119 189 8 44 44 162 44 30 44 1...
Truncated

Test 49

Verdict: ACCEPTED

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
116 118 157 118 116 157 112 11...
Truncated

Test 50

Verdict: ACCEPTED

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 59 48 34 179 179 179 48 152...
Truncated

Test 51

Verdict: ACCEPTED

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 739 23...
Truncated

Test 52

Verdict: ACCEPTED

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

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

user output
885 885 210 58 184 417 417 210...
Truncated

Test 53

Verdict: ACCEPTED

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

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

user output
756 71 278 989 483 874 967 286...
Truncated

Test 54

Verdict: ACCEPTED

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

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

user output
877 788 969 53 961 844 889 95 ...
Truncated

Test 55

Verdict: ACCEPTED

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

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

user output
462 471 752 462 117 117 117 75...
Truncated

Test 56

Verdict: ACCEPTED

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

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

user output
272 308 541 741 744 541 404 83...
Truncated

Test 57

Verdict: ACCEPTED

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

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

user output
423 396 886 423 118 118 118 88...
Truncated

Test 58

Verdict: ACCEPTED

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 130 87...
Truncated

Test 59

Verdict: ACCEPTED

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

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

user output
965 581 558 581 852 484 224 61...
Truncated

Test 60

Verdict: ACCEPTED

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

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

user output
491 891 784 116 698 287 711 52...
Truncated

Test 61

Verdict: ACCEPTED

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

correct output
6989 36001 68282 32295 75083 5...

user output
6989 36001 68282 32295 75083 5...
Truncated

Test 62

Verdict: ACCEPTED

input
100000 100000
13228 17398 79610 18457 92126 ...

correct output
85422 34285 24843 40734 50094 ...

user output
85422 34285 24843 40734 50094 ...
Truncated

Test 63

Verdict: ACCEPTED

input
100000 100000
11080 55900 74628 73314 33646 ...

correct output
48679 3060 97205 31406 48488 7...

user output
48679 3060 97205 31406 48488 7...
Truncated

Test 64

Verdict: ACCEPTED

input
100000 100000
96918 48776 71938 59265 12094 ...

correct output
50083 27613 20102 27613 12216 ...

user output
50083 27613 20102 27613 12216 ...
Truncated

Test 65

Verdict: ACCEPTED

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

correct output
37517 7697 66294 35895 68112 4...

user output
37517 7697 66294 35895 68112 4...
Truncated

Test 66

Verdict: ACCEPTED

input
100000 100000
94335 18669 83747 67315 56026 ...

correct output
64204 74411 86031 20050 87068 ...

user output
64204 74411 86031 20050 87068 ...
Truncated

Test 67

Verdict: ACCEPTED

input
100000 100000
70439 82301 50793 35505 51484 ...

correct output
51403 83667 50017 91054 47448 ...

user output
51403 83667 50017 91054 47448 ...
Truncated

Test 68

Verdict: ACCEPTED

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

correct output
27290 75822 76263 59416 31480 ...

user output
27290 75822 76263 59416 31480 ...
Truncated

Test 69

Verdict: ACCEPTED

input
100000 100000
47136 94209 59915 78143 78636 ...

correct output
88634 32371 40082 48974 13288 ...

user output
88634 32371 40082 48974 13288 ...
Truncated

Test 70

Verdict: ACCEPTED

input
100000 100000
39437 57474 60243 20923 38668 ...

correct output
23653 50188 81237 25631 79750 ...

user output
23653 50188 81237 25631 79750 ...
Truncated