Submission #792684

#TimeUsernameProblemLanguageResultExecution timeMemory
792684KaitokidWiring (IOI17_wiring)C++14
100 / 100
55 ms16332 KiB
//#include "wiring.h" #include <bits/stdc++.h> using namespace std; typedef long long ll; ll min_total_length(vector<int> r, vector<int> b) { int n=r.size()+b.size(); vector<pair<ll,ll> > g; g.push_back({-1,-1}); for(int i=0;i<r.size();i++)g.push_back({r[i],0}); for(int i=0;i<b.size();i++)g.push_back({b[i],1}); sort(g.begin(),g.end()); vector<ll>dp(n+1),pr(n+1),lst(3*n,-1),nx(n+1); vector<ll>prv={-1,-1}; for(int i=n;i>=1;i--) { nx[i]=prv[1-g[i].second]; prv[g[i].second]=i; } prv={-1,-1}; ll s=0; lst[n]=0; for(int i=1;i<=n;i++) { dp[i]=10000000000000000; pr[i]=pr[i-1]+(2*g[i].second-1)*g[i].first; s+=2*g[i].second-1; if(nx[i]!=-1) dp[i]=dp[i-1]+g[nx[i]].first-g[i].first; prv[g[i].second]=i; if(prv[1-g[i].second]!=-1) { dp[i]=min(dp[i],dp[i-1]+g[i].first-g[prv[1-g[i].second]].first); if(lst[n+s]!=-1) { dp[i]=min(dp[i],dp[lst[n+s]]+abs(pr[i]-pr[lst[s+n]])); } } //cout<<dp[i]<<" "; lst[n+s]=i; } //cout<<endl; return dp[n]; } /*int main() { cout<<min_total_length({0,1,2,3}, {4,5,6,7}); } */

Compilation message (stderr)

wiring.cpp: In function 'll min_total_length(std::vector<int>, std::vector<int>)':
wiring.cpp:9:14: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
    9 | for(int i=0;i<r.size();i++)g.push_back({r[i],0});
      |             ~^~~~~~~~~
wiring.cpp:10:14: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   10 | for(int i=0;i<b.size();i++)g.push_back({b[i],1});
      |             ~^~~~~~~~~
#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...