Submission #1368013

#TimeUsernameProblemLanguageResultExecution timeMemory
1368013FaresSTHNile (IOI24_nile)C++20
67 / 100
2093 ms7676 KiB
#include"bits/stdc++.h"
using namespace std;
using ll=long long;
#define S second
#define F first
struct artifact{ll w,a,b,c;};
vector<ll>calculate_costs(vector<int>w,vector<int>a,vector<int>b,vector<int>e){
	int n=w.size();
	vector<artifact>v(n);
	for(int i=0;i<n;i++)v[i]={w[i],a[i],b[i],a[i]-b[i]};
	sort(v.begin(),v.end(),[](auto a,auto b){return a.w<b.w;});
	// for(auto i:v)cout<<i.w<<' '<<i.a<<' '<<i.b<<endl;
	vector<ll>res;
	for(int qry:e){
		vector<ll>dp(n,v[0].a);
		for(int i=1;i<n;i++){
			dp[i]=v[i].a+dp[i-1];
			if(v[i].w-v[i-1].w<=qry){
				if(i-2>=0)dp[i]=min(dp[i],dp[i-2]+v[i].b+v[i-1].b);
				else dp[i]=min(dp[i],v[i].b+v[i-1].b);
			}
			if(i-2>=0&&v[i].w-v[i-2].w<=qry){
				if(i-3>=0)dp[i]=min(dp[i],dp[i-3]+v[i].b+v[i-1].a+v[i-2].b);
				else dp[i]=min(dp[i],v[i].b+v[i-1].a+v[i-2].b);
			}
		}
		// for(int i:dp)cout<<i<<' ';
		// cout<<endl;
		res.push_back(dp[n-1]);
	}
	return res;
}
#Result Execution timeMemoryGrader output
Fetching results...
#Result Execution timeMemoryGrader output
Fetching results...
#Result Execution timeMemoryGrader output
Fetching results...
#Result Execution timeMemoryGrader output
Fetching results...
#Result Execution timeMemoryGrader output
Fetching results...
#Result Execution timeMemoryGrader output
Fetching results...
#Result Execution timeMemoryGrader output
Fetching results...
#Result Execution timeMemoryGrader output
Fetching results...