Submission #128411

#TimeUsernameProblemLanguageResultExecution timeMemory
128411DanerZeinWiring (IOI17_wiring)C++14
13 / 100
36 ms3836 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 dp[210][210]; memset(dp,MAX,sizeof dp); dp[0][0]=1; int mi=MAX; for(int i=0;i<b.size();i++){ for(int j=0;j<r.size();j++){ if(i==0 and j==0){ continue; } else{ if(i==0){ mi=min(mi,dp[i][j-1]); } else{ if(j==0){ mi=min(mi,dp[i-1][j]); } else{ mi=min(mi,dp[i-1][j-1]); mi=min(mi,dp[i-1][j]); mi=min(mi,dp[i][j-1]); } } dp[i][j]=mi+abs(r[i]-b[i]); } } } return dp[r.size()-1][b.size()-1]; } } /* 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; } */ /* 4 5 0 1 2 3 4 5 7 9 10 */

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<b.size();i++){
                     ~^~~~~~~~~
wiring.cpp:59:26: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
             for(int j=0;j<r.size();j++){
                         ~^~~~~~~~~
#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...