Submission #1312225

#TimeUsernameProblemLanguageResultExecution timeMemory
1312225exoworldgdNile (IOI24_nile)C++20
67 / 100
2095 ms13068 KiB
#include "nile.h"
#include<bits/stdc++.h>
#define exoworldgd cin.tie(0)->sync_with_stdio(0),cout.tie(0)
#define ll long long
using namespace std;
const ll INF=1e18;
vector<ll>calculate_costs(vector<int>W,vector<int>A,vector<int>B,vector<int>E){
	int n=W.size(),q=E.size();
	vector<int>ord(n),w(n),a(n),b(n);
	iota(ord.begin(),ord.end(),0),sort(ord.begin(),ord.end(),[&](int i,int j){return W[i]<W[j];});
	for(int i=0;i<n;i++)w[i]=W[ord[i]],a[i]=A[ord[i]],b[i]=B[ord[i]];
	auto solve=[&](int d){
		vector<vector<ll>>dp(n+1,vector<ll>(4,INF));
		dp[n][0]=0;
		for(int i=n-1;i>=0;i--){
			dp[i][0]=min(a[i]+dp[i+1][0],b[i]+dp[i+1][1]);
			for(int j=i-1;j+1&&i-j<=2&&w[i]-w[j]<=d;j--)dp[i][i-j]=min(a[i]+dp[i+1][i+1-j],b[i]+dp[i+1][0]);
		}
		return dp[0][0];
	};
	vector<ll>R(q);
	for(int i=0;i<q;i++)R[i]=solve(E[i]);
	return R;
}
#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...