Submission #430783

#TimeUsernameProblemLanguageResultExecution timeMemory
430783BelguteiWiring (IOI17_wiring)C++17
7 / 100
51 ms7748 KiB
#include "wiring.h" #include<bits/stdc++.h> using namespace std; #define ll long long #define ff first #define ss second #define mk make_pair #define pb push_back pair<int,int> a[200005]; int cnt; ll sum[200005],dp[200005]; long long min_total_length(std::vector<int> red, std::vector<int> blue) { for(int i=0; i<red.size(); i++){ cnt++; a[cnt].ff=red[i]; a[cnt].ss=0; } for(int i=0; i<blue.size(); i++){ cnt++; a[cnt].ff=blue[i]; a[cnt].ss=1; } sort(a+1,a+cnt+1); a[0] = {-1e9, 1-a[1].ss}; for(int i=1; i<=cnt; i++) sum[i]=sum[i-1]+a[i].ff; /* for(int i=1; i<=cnt; i++){ cout<<a[i].ff<<" "<<a[i].ss<<'\n'; } for(int i=1; i<=cnt; i++){ cout<<sum[i]<<" "; } cout<<"\n"; */ for(int i=1,p=1; i<=cnt; i++){ int j=i; while(j<cnt && a[j+1].ss == a[i].ss) j++; for(int k=p; k<i; k++){ dp[k]=min(dp[k],dp[k-1]+a[i].ff-a[k].ff); } long long C=0, M=dp[i-1]; for(int k=i; k<=j; k++){ C+=a[k].ff-a[i-1].ff; int x=2*i-k-2; if(x+1>=p){ M=min(M,dp[x]+a[i-1].ff*(i-x-1)-(sum[i-1]-sum[x])); } dp[k]=C+M; } p=i; i=j; } return dp[cnt]; }

Compilation message (stderr)

wiring.cpp: In function 'long long int min_total_length(std::vector<int>, std::vector<int>)':
wiring.cpp:16:16: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   16 |  for(int i=0; i<red.size(); i++){
      |               ~^~~~~~~~~~~
wiring.cpp:21:16: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   21 |  for(int i=0; i<blue.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...