Submission #264283

#TimeUsernameProblemLanguageResultExecution timeMemory
264283kshitij_sodaniWiring (IOI17_wiring)C++14
13 / 100
144 ms22756 KiB
#include <bits/stdc++.h> using namespace std; typedef long long llo; #define mp make_pair #define pb push_back #define a first #define b second #include "wiring.h" llo dp[201][201]; long long min_total_length(std::vector<int> r, std::vector<int> b) { int n,m; n=r.size(); m=b.size(); llo ans=0; vector<llo> co; vector<llo> co2; set<int> mi; set<int> ma; //find min points for(auto j:r){ mi.insert(j); } for(auto j:b){ ma.insert(j); } for(auto x:r){ auto j=ma.lower_bound(x); int cur=1e9; if(j!=ma.end()){ cur=min(cur,abs((*j)-x)); } if(j!=ma.begin()){ j--; cur=min(cur,abs((*j)-x)); } ans+=cur; co.pb(cur); } for(auto x:b){ auto j=mi.lower_bound(x); int cur=1e9; if(j!=mi.end()){ cur=min(cur,abs((*j)-x)); } if(j!=mi.begin()){ j--; cur=min(cur,abs((*j)-x)); } ans+=cur; co2.pb(cur); } //end min points multiset<llo> aa; multiset<llo> bb; vector<pair<llo,llo>> cc; llo ii=0; for(auto j:r){ cc.pb({j,ii}); ii++; } for(auto j:b){ cc.pb({j,ii}); ii++; } sort(cc.begin(),cc.end()); for(auto j:cc){ if(j.b<n){ if(bb.size()==0){ aa.insert(-j.a-co[j.b]); continue; } int x=*bb.begin(); if(j.a+x-co[j.b]>0){ aa.insert(-j.a-co[j.b]); continue; } bb.erase(bb.begin()); ans+=j.a+x-co[j.b]; } else{ if(aa.size()==0){ bb.insert(-j.a-co2[j.b-n]); continue; } int x=*aa.begin(); if(j.a+x-co2[j.b-n]>0){ bb.insert(-j.a-co2[j.b-n]); continue; } aa.erase(aa.begin()); ans+=j.a+x-co2[j.b-n]; } } return ans; for(int i=1;i<=n;i++){ for(int j=1;j<=m;j++){ dp[i][j]=abs(r[i-1]-b[j-1])-co[i-1]-co2[j-1]+dp[i-1][j-1]; dp[i][j]=min(dp[i][j],min(dp[i-1][j],dp[i][j-1])); } } return ans+dp[n][m]; return ans; /*} */ /*vector<int> rr; vector<int> bb; while(r.size() or b.size()){ for(auto i:r){ for(auto j:b){ } } } */ return ans; } /*int main(){ ios_base::sync_with_stdio(false); cin.tie(NULL); return 0; } */
#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...