Submission #931713

#TimeUsernameProblemLanguageResultExecution timeMemory
931713AiperiiiWiring (IOI17_wiring)C++14
100 / 100
85 ms15032 KiB
#include <bits/stdc++.h> #include "wiring.h" #define ll long long #define ff first #define ss second #define all(x) x.begin(),x.end() #define pb push_back using namespace std; const int N=2e5+5; ll dp[N],pr[N]; long long min_total_length(vector<int> r,vector<int> b) { vector <pair <ll,ll> > v; v.pb({0,-1}); for(int i=0;i<r.size();i++)v.pb({r[i],-1}); for(int i=0;i<b.size();i++)v.pb({b[i],1}); sort(all(v)); int cnt=0; map <int,int> pos; for(int i=1;i<v.size();i++){ pr[i]=pr[i-1]+v[i].ff*v[i].ss; cnt+=v[i].ss; ll x=1e18; if(v[i].ss==-1){ auto it=upper_bound(all(b),v[i].ff); if(it!=b.end())x=min(x,*it-v[i].ff); if(it!=b.begin()){ it--; x=min(x,abs(*it-v[i].ff)); } } else{ auto it=upper_bound(all(r),v[i].ff); if(it!=r.end())x=min(x,*it-v[i].ff); if(it!=r.begin()){ it--; x=min(x,abs(*it-v[i].ff)); } } dp[i]=dp[i-1]+x; if(cnt==0 or pos[cnt]>0)dp[i]=min(dp[i],dp[pos[cnt]]+abs(pr[i]-pr[pos[cnt]])); pos[cnt]=i; } return dp[v.size()-1]; } /*signed main(){ ios_base::sync_with_stdio(); cin.tie(0);cout.tie(0); int n,m; cin>>n>>m; vector <int> a(n),b(m); for(int i=0;i<n;i++)cin>>a[i]; for(int i=0;i<m;i++)cin>>b[i]; cout<<min_total_length(a,b); }*/ /* 1 2 3 7 0 4 5 9 10 0,0 0,1 1,0, 2,0 3,0 4,1 5,1 7,0 9,1 10,1 0 0 -1 -3 0 1 1 3 */

Compilation message (stderr)

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