Submission #931352

#TimeUsernameProblemLanguageResultExecution timeMemory
931352vjudge1Fruits (NOI22_fruits)C++17
6 / 100
1064 ms14420 KiB
#include <bits/stdc++.h>
using namespace std;

#define int long long
#define all(x) x.begin(), x.end()

const int N = 5e5+5, M = 5e3+3, inf = LLONG_MAX;

int n, a[N], c[N], ans[N];
bitset<N> vis;

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

  cin >> n;
  memset(ans, 0, sizeof(ans));
  for (int i = 0; i < n; i++) {
    cin >> a[i];
    if (a[i] != -1) {
      a[i]--;
      vis[a[i]] = 1;
    }
  }
  for (int i = 0; i < n; i++) {
    cin >> c[i];
  }

  vector<int> v(n);
  for (int i = 0; i < n; i++) v[i] = i;

  do {
    int x = 0;
    int mx = -1;
    for (int i = 0; i < n; i++) {
      if ((vis[v[i]] || a[i] != -1) && a[i] != v[i]) break;
      if (mx < v[i]) {
        x += c[v[i]];
        mx = v[i];
      }
      ans[i] = max(ans[i], x);
    }
  }
  while (next_permutation(all(v)));

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