Submission #832745

#TimeUsernameProblemLanguageResultExecution timeMemory
832745gustasonFruits (NOI22_fruits)C++14
11 / 100
80 ms16280 KiB
#include <bits/stdc++.h>
using namespace std;
using ll = long long;
#define int ll

signed main() {
	ios_base::sync_with_stdio(false);
	cin.tie(nullptr);
	int n;
	cin >> n;
	
	int a[n], c[n];
	
	for(int i = 0; i < n; i++) {
		cin >> a[i];
	}
	
	for(int i = 0; i < n; i++) {
		cin >> c[i];
	}
	
	if (n >= 9) {
		ll sum = 0;
		for(int i = n-1; i >= 0; i--) {
			sum += c[i];
			cout << sum << " ";
		}
		exit(0);
	}

	int order[n];
	iota(order, order+n, 1);
	vector<ll> ans(n);
	
	do {
		int curr = -1;
		ll val = 0;
		
		for(int i = 0; i < n; i++) {
			if (a[i] != -1 && order[i] != a[i]) {
				goto Out;
			}
		}
		
		for(int i = 0; i < n; i++) {
			if (order[i] > curr) {
				curr = order[i];
				val += c[order[i]-1];
			}
			ans[i] = max(ans[i], val);
		}
	
		Out:;
	} while(next_permutation(order, order+n));

	for(auto& i : ans) {
		cout << 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...