Submission #1223390

#TimeUsernameProblemLanguageResultExecution timeMemory
1223390JerRoad Closures (APIO21_roads)C++20
7 / 100
45 ms10172 KiB
#include "roads.h"
#include <bits/stdc++.h>
#include <vector>

using namespace std;

typedef long long ll;

const int MAXN = 100005;
int con[MAXN];
int n;
ll total = 0;
ll dp[MAXN];
ll w[MAXN];

ll solve(int i){
	if (dp[i] != -1)
		return dp[i];

	if (i == n - 1)
		return w[i];
	
	if (i == n - 2)
		return max(w[i], w[i + 1]);
	
	dp[i] = max(w[i] + solve(i + 2), solve(i + 1));
	return dp[i];
}

std::vector<long long> minimum_closure_costs(int N, std::vector<int> U, std::vector<int> V, std::vector<int> W) {
	n = N;
	
	for (int i = 0; i < n - 1; i++)
		w[i] = (ll)W[i], total += w[i];
	
	vector<ll> res;

	memset(dp, -1, sizeof dp);

	res.push_back(total);
	res.push_back(total - solve(0));

	for (int i = 0; i < n - 2; i++)
		res.push_back(0);
	
	return res;
}
#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...
#Verdict Execution timeMemoryGrader output
Fetching results...