Submission #1349565

#TimeUsernameProblemLanguageResultExecution timeMemory
1349565edoKrugomet (COCI25_krugomet)C++20
70 / 70
308 ms18340 KiB
#include <bits/stdc++.h>

using namespace std;
using ll = long long;

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

  int n, k;
  cin >> n >> k;
  int LOG = __lg(k) + 1;
  vector<int> a(n + 1);
  for (int i = 1; i <= n; ++i)
    cin >> a[i];
  vector<vector<int>> par(n + 1, vector<int>(LOG + 1));
  for (int i = 1; i <= n; ++i)
    cin >> par[i][0];

  for (int l = 1; l <= LOG; ++l) {
    for (int i = 1; i <= n; ++i) {
      par[i][l] = par[par[i][l - 1]][l - 1];
    }
  }

  vector<int> ans(n + 1);
  for (int i = 1; i <= n; ++i) {
    int j = i;
    for (int b = LOG + 1; b--;) {
      if (k >> b & 1) {
        j = par[j][b];
        // break;
      }
    }
    ans[j] += a[i];
    cerr << i << " " << j << "\n";
  }

  int mx = ranges::max(ans);
  cout << mx << "\n";

  for (int i = 1; i <= n; ++i) {
    if (ans[i] == mx) {
      cout << i << " ";
    }
  }

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