Submission #1336667

#TimeUsernameProblemLanguageResultExecution timeMemory
1336667trungcanKrugomet (COCI25_krugomet)C++17
70 / 70
37 ms12716 KiB
#include <bits/stdc++.h>

using namespace std;

const int N = 1e5 + 5;

int n, K, a[N], ans[N], p[33][N];

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

    cin >> n >> K;
    for (int i = 1; i <= n; ++i) cin >> a[i];
    for (int i = 1; i <= n; ++i)
        cin >> p[0][i];

    for (int k = 1; (1 << k) <= K; ++k)
        for (int i = 1; i <= n; ++i)
            p[k][i] = p[k - 1][p[k - 1][i]];

    for (int i = 1; i <= n; ++i){
        int cur = i;
        for (int x = K; x > 0; x ^= x & -x)
            cur = p[__builtin_ctz(x)][cur];
        ans[cur] += a[i];
//        cout << cur << "\n";
    }

    int cur = 0;
    for (int i = 1; i <= n; ++i)
        cur = max(cur, ans[i]);
    cout << cur << "\n";
    for (int i = 1; i <= n; ++i)
        if (ans[i] == cur) cout << i << " ";
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...