This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
#include <bits/stdc++.h>
using namespace std;
#define all(x) x.begin(), x.end()
// const long long inf = 1e18;
vector<long long> minimum_closure_costs(int N, vector<int> U, vector<int> V, vector<int> W) {
bool flag1 = true, flag2 = true;;
for(int i = 0; i < N - 1; i++) {
if(U[i] != 0) {
flag1 = false;
}
if(U[i] != i || V[i] != i + 1) {
flag2 = false;
}
}
if(flag1) {
sort(all(W));
vector<long long> answ(N, 0);
int it = 0;
for(int i = N - 2; i >= 0; i--) {
answ[i] = answ[i + 1] + W[it++];
}
return answ;
}
if(flag2) {
vector<long long> answ(N, 0);
for(auto i: W) {
answ[0] += i;
}
vector<vector<long long>> dp(N, vector<long long> (2, 0));
dp[0][0] = 0;
dp[0][1] = 0;
for(int i = 1; i < N; i++) {
dp[i][0] = min(dp[i - 1][1], dp[i - 1][0]) + W[i - 1];
dp[i][1] = dp[i - 1][0];
}
answ[1] = min(dp[N - 1][0], dp[N - 1][1]);
return answ;
}
return vector<long long>(N, 0);
}
# | 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... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |