Submission #425793

#TimeUsernameProblemLanguageResultExecution timeMemory
425793HazemWiring (IOI17_wiring)C++14
0 / 100
8 ms384 KiB
#include "wiring.h" #include <bits/stdc++.h> using namespace std; #define LL long long const LL INF = 1e9; const LL LINF = 1e18; const int N = 2e3+10; LL dp[N][N][2][2]; LL n,m; vector<LL>R,B; LL solve(int i,int j,int t1,int t2){ if(i==n-1&&j==m-1&&t1&&t2) return 0; if(dp[i][j][t1][t2]!=-1) return dp[i][j][t1][t2]; dp[i][j][t1][t2] = LINF; if(t1&&i<n-1) dp[i][j][t1][t2] = min(dp[i][j][t1][t2],solve(i+1,j,0,t2)); if(t2&&j<m-1) dp[i][j][t1][t2] = min(dp[i][j][t1][t2],solve(i,j+1,t1,0)); dp[i][j][t1][t2] = min(dp[i][j][t1][t2],solve(i,j,1,1)+abs(R[i]-B[j])); return dp[i][j][t1][t2]; } long long min_total_length(std::vector<int> r, std::vector<int> b) { n = r.size(),m = b.size(); LL ret = 0; for(LL i=0;i<n-1;i++) ret += (R[i+1]-R[i])*(i+1); for(LL i=m-1;i>=1;i--) ret += (B[i]-B[i-1])*(m-i); ret += (B[0]-R[n-1])*min(n,m); if(n>m) for(int i=n-1;i>=m;i--) ret += B[0]-R[i]; if(m>n) for(int i=0;i<m-n;i++) ret += B[i]-R[n-1]; return ret; }
#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...