Submission #1221845

#TimeUsernameProblemLanguageResultExecution timeMemory
1221845Dan4LifeNile (IOI24_nile)C++20
0 / 100
2094 ms4364 KiB
#include "nile.h"
#include <bits/stdc++.h>
using namespace std;

#define pb push_back
#define sz(a) (int)a.size()
#define all(a) begin(a),end(a)

using ll = long long;
using ar2 = array<int,2>;
using ar3 = array<int,3>;
using vi = vector<int>;
using vll = vector<ll>;

const int mxN = (int)1e5+10;
const int INF = (int)1e9+10;
const ll LINF = (ll)1e18+10;

int n, q;
ll dp[mxN];

vll calculate_costs(vi W, vi A, vi B, vi E){
	n = sz(W); q = sz(E);
	vll ans; ans.clear();
	ll tot = accumulate(all(B),0ll);
	vi v(n,0); iota(all(v),0);
	sort(all(v),[&](int i, int j){ return W[i]<W[j]; });
	for(auto D:E){
		dp[0] = 0;
		for(int i = 1; i <= n; i++){
			dp[i] = dp[i-1] + A[v[i-1]];
			ll mn = LINF;
			for(int j = i-1; j>=1; j--){
				if(W[v[i-1]]-W[v[j-1]]>D) break;
				dp[i] = min(dp[i], dp[j-1]+B[v[i-1]]+B[v[j-1]]+((i-j-1)%2)*mn);
				mn = min(mn, (ll)A[v[j-1]]);
			}
		}
		ans.pb(dp[n]);
	}
	return ans;
}
#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...
#Verdict Execution timeMemoryGrader output
Fetching results...