Submission #1205977

#TimeUsernameProblemLanguageResultExecution timeMemory
1205977JakobZorz나일강 (IOI24_nile)C++20
67 / 100
2093 ms7560 KiB
#include "nile.h" #include<algorithm> #include<iostream> using namespace std; typedef long long ll; ll solve(vector<int>w,vector<int>a,vector<int>b,int D){ int n=(int)w.size(); // ce jih je sodo, potem samo sosede povezem ll res=0; for(int i:b) res+=i; if(n%2==0) return res; // 2 primera: // [1 2] [3 4] 5 [6 7] // 5-ke ne poparckam // [1 2] [3 4 5] [6 7] // 4-ke ne poparckam. // to lahko, samo ce abs(w[3]-w[5])<=D // 1. primer: ll res2=1e18; for(int i=0;i<n;i+=2) res2=min(res2,res-b[i]+a[i]); // 2. primer for(int i=1;i<n;i+=2) if(abs(w[i-1]-w[i+1])<=D) res2=min(res2,res-b[i]+a[i]); return res2; } 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; for(int D:E){ vector<int>w; vector<int>a; vector<int>b; res.push_back(0); for(int i=0;i<n;i++){ w.push_back(arr[i].first); a.push_back(arr[i].second.first); b.push_back(arr[i].second.second); if(i==n-1||abs(arr[i].first-arr[i+1].first)>D){ res.back()+=solve(w,a,b,D); w.clear(); a.clear(); b.clear(); } } } 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...