Submission #1313041

#TimeUsernameProblemLanguageResultExecution timeMemory
1313041boclobanchatWiring (IOI17_wiring)C++20
7 / 100
97 ms6156 KiB
#include"wiring.h" #include<bits/stdc++.h> using namespace std; const int MAXN=444; const long long INF=1e18; long long dp[MAXN],pref[MAXN]; bool comp(pair<long long,long long> a,pair<long long,long long> b) { return a.second<b.second; } long long min_total_length(vector<int> A,vector<int> B) { vector< pair<long long,long long> > vi; for(auto v:A) vi.push_back({0,v}); for(auto v:B) vi.push_back({1,v}); sort(vi.begin(),vi.end(),comp); for(int i=1;i<=vi.size();i++) { dp[i]=INF,pref[i]=pref[i-1]+vi[i-1].second; int chain=0,pos=0; for(int j=i-1;j;j--) { if(vi[j-1].first!=vi[j].first) chain++,pos=j+1; if(chain==2) break; if(chain) { long long a=i-pos+1,b=pos-j; long long res=(pref[i]-pref[pos-1])-(pref[pos-1]-pref[j-1])+vi[pos-1].second*(b-min(a,b))-vi[pos-2].second*(a-min(a,b)); dp[i]=min(dp[i],dp[j-1]+res); dp[i]=min(dp[i],dp[j]+res); } } } return dp[vi.size()]; }
#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...