Submission #1367907

#TimeUsernameProblemLanguageResultExecution timeMemory
1367907FaresSTHNile (IOI24_nile)C++20
13 / 100
16 ms4912 KiB
#include"bits/stdc++.h"
using namespace std;
using ll=long long;
#define S second
#define F first
struct artifact{int w,a,b,c;};
vector<ll>calculate_costs(vector<int>w,vector<int>a,vector<int>b,vector<int>e){
	int n=w.size(),q=e.size();
	vector<artifact>v(n);
	ll mn=1e18;

	for(int i=0;i<n;i++)v[i]={w[i],a[i],b[i],a[i]-b[i]},mn=min(mn,0ll+v[i].c);
	sort(v.begin(),v.end(),[](auto a,auto b){return a.w<b.w;});
	ll sum=accumulate(b.begin(),b.end(),0ll);
	vector<ll>res;
	for(int qry:e){
		if(n%2==0)res.push_back(sum);
		else if(qry>1)res.push_back(sum+mn);
		else{
			ll pr=v[0].b;
			vector<ll>dp(n);
			dp[0]=v[0].a;
			if(n>1)dp[1]=v[0].b+v[1].b,pr+=v[1].b;
			for(int i=2;i<n;i++){
				pr+=v[i].b;
				if(i%2)dp[i]=pr;
				else dp[i]=min(0ll+v[i].a+dp[i-1],dp[i-2]+v[i].b+v[i-1].b);
			}
			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...