#include<iostream>
#include<vector>
#include<queue>
#include<algorithm>
using namespace std;
typedef long long ll;
ll inf = 1e18;
int main(){
ios::sync_with_stdio(false);
cin.tie(0);
int n;
cin >> n;
vector<int> vec(n + 1);
vector<ll> cost(n + 1);
for(int i = 0; i < n; i++) cin >> vec[i + 1];
for(int i = 1; i <= n; i++) cin >> cost[i];
vector<int> perm;
for(int i = 1; i <= n; i++) perm.push_back(i);
vector<ll> anss(n + 1);
do{
int flag = n;
for(int i = 1; i <= n; i++){
if(perm[i - 1] != vec[i] && vec[i] != -1){
flag = i - 1;
break;
}
}
if(flag != n) continue;
int maxi = 0;
ll sum = 0;
for(int i = 0; i < n; i++){
if(maxi < perm[i]){
maxi = perm[i];
sum += cost[perm[i]];
}
anss[i + 1] = max(anss[i + 1], sum);
}
}while(next_permutation(perm.begin(), perm.end()));
for(int i = 1; i <= n; i++) cout << anss[i] << " \n"[i == n];
}
// g++ -std=c++20 -Wall -Wextra -Wshadow -fsanitize=undefined -fsanitize=address -o run pE_brute.cpp
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |