Submission #1361282

#TimeUsernameProblemLanguageResultExecution timeMemory
1361282islam_2010Krugomet (COCI25_krugomet)C++20
70 / 70
63 ms24752 KiB
#include <bits/stdc++.h>
using namespace std;
 
#define int long long
 
const int sz = 1e5 + 5;
const int mod = 998244353;

int up[sz][30];
int a[sz];
int ans[sz];
signed main(){
    ios_base::sync_with_stdio(0);
    cin.tie(0);
    
    int n, k;
    cin >> n >> k;
    for(int i = 1; i <= n; i++){
        cin >> a[i];
    }
    for(int i = 1; i <= n; i++){
        int x;
        cin >> x;
        up[i][0] = x;
    }
    for(int j = 1; j < 30; j++){
        for(int i = 1; i <= n; i++){
            up[i][j] = up[up[i][j-1]][j-1];
        }
    }
    int mx = 0;
    int c = 0;
    for(int i = 1; i <= n; i++){
        int node = i;
        for(int j = 0; j < 30; j++){
            if(k&(1<<j)){
                node = up[node][j];
            }
        }
        ans[node] += a[i];
        mx = max(mx, ans[node]);
        
    }cout << mx << endl;
    for(int i = 1; i <= n; i++){
        if(ans[i] == mx){
            cout << i << " ";
        }
    }



    
    return 0;
}
#Result Execution timeMemoryGrader output
Fetching results...
#Result Execution timeMemoryGrader output
Fetching results...
#Result Execution timeMemoryGrader output
Fetching results...
#Result Execution timeMemoryGrader output
Fetching results...