Submission #1238882

#TimeUsernameProblemLanguageResultExecution timeMemory
1238882MarwenElarbiNile (IOI24_nile)C++20
67 / 100
2096 ms6216 KiB
#include <bits/stdc++.h> using namespace std; #define fi first #define se second #define pb push_back const int nax = 1e5+5; long long dp[nax]; std::vector<long long> calculate_costs(std::vector<int> W, std::vector<int> A, std::vector<int> B, std::vector<int> E) { int n=A.size(); int q=E.size(); vector<pair<int,pair<int,int>>> tab(n); vector<long long> answer(q); for (int i = 0; i < n; ++i) tab[i]={W[i],{A[i],B[i]}}; sort(tab.begin(),tab.end()); for (int i = 0; i < n; ++i) { W[i]=tab[i].fi; A[i]=tab[i].se.fi; B[i]=tab[i].se.se; } for (int k = 0; k < q; ++k) { int d = E[k]; memset(dp,0,sizeof dp); for (int i = 0; i < n; ++i) { dp[i]=1e18; long long cur=0; int mn=1e9; for (int j = i; j > i-4; --j) { if(j<0) break; if(W[i]-W[j]>d) break; cur+=B[j]; mn=min(mn,A[j]-B[j]); if((i-j+1)%2) dp[i]=min(dp[i],cur+mn+(j ? dp[j-1] : 0)); else dp[i]=min(dp[i],cur+(j ? dp[j-1] : 0)); } } answer[k]=dp[n-1]; } return answer; }
#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...