Submission #1205966

#TimeUsernameProblemLanguageResultExecution timeMemory
1205966JakobZorzNile (IOI24_nile)C++20
17 / 100
2096 ms5636 KiB
#include "nile.h"
#include<algorithm>
#include<iostream>
using namespace std;
typedef long long ll;

vector<ll>calculate_costs(vector<int>W,vector<int>A,vector<int>B,vector<int>E){
	vector<pair<int,pair<int,int>>>arr; // (W, (A, B))
	int n=(int)W.size();
	for(int i=0;i<n;i++){
		arr.push_back({W[i],{A[i],B[i]}});
	}
	sort(arr.begin(),arr.end());	
	vector<ll>res;
	vector<ll>pref(n+1);
	for(int i=0;i<n;i++)
		pref[i+1]=pref[i]+arr[i].second.first;
	for(int D:E){
		vector<ll>dp(n+1);	
		dp[0]=0;
		for(int i=1;i<=n;i++){
			// pripelji samega
			dp[i]=dp[i-1]+arr[i-1].second.first;
			
			// pripelji i-1 skupaj z j
			for(int j=0;j<i-1;j++){
				if(abs(arr[i-1].first-arr[j].first)<=D){
					dp[i]=min(dp[i],dp[j]+arr[i-1].second.second+arr[j].second.second+pref[i-1]-pref[j+1]);
				}
			}
		}
		res.push_back(dp[n]);
	/*cout<<"W: ";
	for(int i=0;i<n;i++)
		cout<<arr[i].first<<" ";
	cout<<"\n";
	cout<<"A: ";
	for(int i=0;i<n;i++)
		cout<<arr[i].second.first<<" ";
	cout<<"\n";
	cout<<"B: ";
	for(int i=0;i<n;i++)
		cout<<arr[i].second.second<<" ";
	cout<<"\n";
	cout<<"dp: ";
	for(int i=0;i<=n;i++)
		cout<<dp[i]<<" ";
	cout<<"\n";*/
	}
	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...
#Verdict Execution timeMemoryGrader output
Fetching results...