Submission #757933

#TimeUsernameProblemLanguageResultExecution timeMemory
757933DexvaFruits (NOI22_fruits)C++14
11 / 100
91 ms16844 KiB
#include <bits/stdc++.h> using namespace std; #define lln long long void solve() { int n; cin >> n; lln ans[n], ref[n], cost[n]; for (int i=0;i<n;i++) ans[i] = 0; for (int i=0;i<n;i++) cin >> ref[i]; for (int i=0;i<n;i++) cin >> cost[i]; vector<int> cur; //what we will permutate over for (int i=0;i<n;i++) { cur.push_back(i); } if (n<=8) { // do brute force solution do { bool ok = true; for (int i=0;i<n;i++) { if (ref[i]!=-1 && ref[i]-1!=cur[i]) { ok = false; break; } } if (!ok) continue; // else { // for (int i=0;i<n;i++) cout << cur[i] << " "; // cout << '\n'; // } lln cursum = 0, maxtaste = -1; for (int k=0;k<n;k++) { if (cur[k]>maxtaste) { cursum += cost[cur[k]]; maxtaste = cur[k]; } // if (cursum > ans[k]) { // cout << k << " | | " << "current perm: "; // for (int i=0;i<n;i++) cout << cur[i] << " "; // cout << '\n'; // } ans[k] = max(ans[k], cursum); } } while (next_permutation(cur.begin(),cur.end())); } else { lln cursum = 0; for (int k=n-1;k>=0;k--) { cursum += cost[k]; ans[n-k-1] = cursum; } } //do dumb greedy solution for (int k=0;k<n;k++) { cout << ans[k] << " "; } cout << '\n'; } int main() { ios_base::sync_with_stdio(false); cin.tie(NULL); int t = 1; while (t--) solve(); 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...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...