Submission #129219

#TimeUsernameProblemLanguageResultExecution timeMemory
129219DanerZeinWiring (IOI17_wiring)C++14
13 / 100
36 ms3840 KiB
#include "wiring.h" #include <bits/stdc++.h> #define MAX 100000000 using namespace std; long long min_total_length(std::vector<int> r, std::vector<int> b) { long long s=0,le,ri; le=0,ri; ri=b.size()-1; if(r[r.size()-1]<b[0]){ while(true){ s+=abs(r[le]-b[ri]); le++; ri--; if(le==r.size()){ if(ri==-1) break; else{ le--; while(true){ s+=abs(r[le]-b[ri]); ri--; if(ri==-1){ break; } } break; } } if(ri==-1){ if(le==r.size()){ break; } else{ ri++; while(true){ s+=abs(r[le]-b[ri]); le++; if(le==r.size()){ break; } } break; } } } if(le!=ri){ for(int i=le;i<=ri;i++){ s+=abs(r[le-1]-b[i]); } } return s; } else{ int wi[100010],ma=-1; bool vis[100010]; memset(wi,-1,sizeof wi); memset(vis,0,sizeof vis); for(int i=0;i<r.size();i++){ ma=max(ma,r[i]); wi[r[i]]=1; } for(int i=0;i<b.size();i++){ wi[b[i]]=2; ma=max(ma,b[i]); } int ans=0,c=r.size()+b.size(); for(int i=0;i<ma;i++){ if(wi[i]==1){ int left=0,right=0,idl,idr; for(int j=i;j<ma;j++){ left++; if(wi[j]==2){ idl=j; break; } } for(int j=i;j>=0;j--){ right++; if(wi[j]==1){ idr=j; break; } } if(vis[idl]==1 and vis[idr]==1){ if(left>right){ ans+=right; } else{ ans+=left; } } else{ if(vis[idl]==1){ ans+=right; vis[idr]=1; } else{ ans+=left; vis[idl]=1; } } } } return ans; } } /* int main() { int n, m; assert(2 == scanf("%d %d", &n, &m)); vector<int> r(n), b(m); for(int i = 0; i < n; i++) assert(1 == scanf("%d", &r[i])); for(int i = 0; i < m; i++) assert(1 == scanf("%d", &b[i])); long long res = min_total_length(r, b); printf("%lld\n", res); return 0; }*/

Compilation message (stderr)

wiring.cpp: In function 'long long int min_total_length(std::vector<int>, std::vector<int>)':
wiring.cpp:7:12: warning: right operand of comma operator has no effect [-Wunused-value]
     le=0,ri;
            ^
wiring.cpp:14:14: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
         if(le==r.size()){
            ~~^~~~~~~~~~
wiring.cpp:30:18: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
             if(le==r.size()){
                ~~^~~~~~~~~~
wiring.cpp:38:26: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
                     if(le==r.size()){
                        ~~^~~~~~~~~~
wiring.cpp:58:22: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
         for(int i=0;i<r.size();i++){
                     ~^~~~~~~~~
wiring.cpp:62:22: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
         for(int i=0;i<b.size();i++){
                     ~^~~~~~~~~
wiring.cpp:66:19: warning: unused variable 'c' [-Wunused-variable]
         int ans=0,c=r.size()+b.size();
                   ^
wiring.cpp:84:27: warning: 'idl' may be used uninitialized in this function [-Wmaybe-uninitialized]
                 if(vis[idl]==1 and vis[idr]==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...