Submission #18051

#TimeUsernameProblemLanguageResultExecution timeMemory
18051comet웜뱃 (IOI13_wombats)C++98
55 / 100
20000 ms20612 KiB
#include <cstdio> #include <algorithm> #include <cstring> using namespace std; #include "wombats.h" int R,C; int H[5000][200]; int V[5000][200]; int dp[5000][200]; void init(int _R, int _C, int _H[5000][200], int _V[5000][200]) { R=_R; C=_C; for(int i=0;i<R;i++){ for(int j=0;j<C-1;j++){ H[i][j]=_H[i][j]; } } for(int i=0;i<R-1;i++){ for(int j=0;j<C;j++){ V[i][j]=_V[i][j]; } } } void changeH(int P, int Q, int W) { H[P][Q]=W; } void changeV(int P, int Q, int W) { V[P][Q]=W; } int escape(int v1, int v2) { dp[0][v1]=0; int sum=0; for(int i=v1-1;i>=0;i--){ sum+=H[0][i]; dp[0][i]=sum; } sum=0; for(int i=v1;i<C-1;i++){ sum+=H[0][i]; dp[0][i+1]=sum; } int l[5000],r[5000]; for(int i=1;i<R;i++){ for(int j=0;j<C;j++){ l[j]=dp[i-1][j]+V[i-1][j]; if(j)l[j]=min(l[j],l[j-1]+H[i][j-1]); } for(int j=C-1;j>=0;j--){ r[j]=dp[i-1][j]+V[i-1][j]; if(j<C-1)r[j]=min(r[j],r[j+1]+H[i][j]); } for(int j=0;j<C;j++){ dp[i][j]=min(l[j],r[j]); } } return dp[R-1][v2]; }
#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...
#Verdict Execution timeMemoryGrader output
Fetching results...