Submission #406692

#TimeUsernameProblemLanguageResultExecution timeMemory
406692daniel920712Wiring (IOI17_wiring)C++14
13 / 100
32 ms2632 KiB
#include "wiring.h" #include <iostream> #include <stdio.h> #include <stdlib.h> using namespace std; long long N,M; long long DP[205][205]; bool have[205][205]={0}; vector < int > x,y; long long F(long long a,long long b) { if(a==N&&b==M) return 0; if(a==N||b==M) return 1e18; if(have[a][b]) return DP[a][b]; have[a][b]=1; DP[a][b]=(long long) abs(y[b]-x[a]); if(N<=M) DP[a][b]+=min(F(a+1,b+1),F(a,b+1)); else DP[a][b]+=min(F(a+1,b+1),F(a+1,b)); return DP[a][b]; } long long min_total_length(vector< int > r, vector < int > b) { long long ans=0,i; N=r.size(); M=b.size(); x=r; y=b; if(N<=200&&M<=200) return F(0,0); else { if(N<=M) { for(i=0;i<min(N,M);i++) ans+=(long long) b[i]-r[i]; for(i=N;i<M;i++) ans+=(long long) b[i]-r[N-1]; } else { for(i=1;i<=M;i++) ans+=(long long) b[M-i]-r[N-i]; for(i=0;i<N-M;i++) ans+=(long long) b[0]-r[i]; } return ans; } }
#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...