제출 #143245

#제출 시각아이디문제언어결과실행 시간메모리
143245Bodo171웜뱃 (IOI13_wombats)C++14
0 / 100
145 ms25080 KiB
#include "wombats.h" #include <iostream> #include <fstream> using namespace std; const int rmax=5001; const int cmax=201; const int buck=10; int h[rmax][cmax],v[rmax][cmax],dp[rmax][cmax]; int opt[cmax][cmax]; int arb[4*(rmax/buck)][cmax][cmax]; int n,m,i,j,start,sgn,len,k; void recalc(int nod,int st,int dr) { for(start=0;start<m;start++) { for(i=0;i<m;i++) dp[st][i]=(1<<30); dp[st][start]=0; for(i=st;i<=dr;i++) { if(i>st) for(j=0;j<m;j++) dp[i][j]=(dp[i-1][j]+v[i-1][j]); for(j=1;j<m;j++) dp[i][j]=min(dp[i][j],dp[i][j-1]+h[i][j-1]); for(j=m-2;j>=0;j--) dp[i][j]=min(dp[i][j],dp[i][j+1]+h[i][j]); } for(j=0;j<m;j++) arb[nod][start][j]=dp[dr][j]; } } void mrg(int A[][cmax],int trans[],int st[][cmax],int dr[][cmax]) { for(i=0;i<m;i++) for(j=0;j<m;j++) A[i][j]=(1<<30); for(i=0;i<m;i++) for(j=0;j<m;j++) { if(st[i][j]+dr[j][i]+trans[j]<A[i][i]) A[i][i]=st[i][j]+dr[j][i]+trans[j],opt[0][i]=j; } int l,r; for(sgn=-1;sgn<=1;sgn+=2) for(len=1;len<m;len++) for(i=0;i<m;i++) if(i+len*sgn>=0&&i+len*sgn<m) { l=opt[len-1][i+sgn];r=opt[len-1][i]; if(l>r) swap(l,r); for(k=l;k<=r;k++) { if(st[i][k]+dr[k][i+len*sgn]+trans[k]<A[i][i+len*sgn]) { A[i][i+len*sgn]=st[i][k]+dr[k][i+len*sgn]+trans[k]; opt[len][i]=k; } } } } void update(int nod,int l,int r,int poz) { if(l==r) { recalc(nod,poz*buck,min((poz+1)*buck-1,n-1)); return; } int m=(l+r)/2; if(poz<=m) update(2*nod,l,m,poz); else update(2*nod+1,m+1,r,poz); mrg(arb[nod],v[(m+1)*buck-1],arb[2*nod],arb[2*nod+1]); } void init(int R, int C, int H[5000][200], int V[5000][200]) { n=R;m=C; for(i=0;i<R;i++) for(j=0;j<C-1;j++) h[i][j]=H[i][j]; for(i=0;i<R-1;i++) for(j=0;j<C;j++) v[i][j]=V[i][j]; for(int p=0;p<=n/buck;p++) update(1,0,n/buck,p); } void changeH(int P, int Q, int W) { h[P][Q]=W; update(1,0,n/buck,P/buck); } void changeV(int P, int Q, int W) { v[P][Q]=W; update(1,0,n/buck,P/buck); } int escape(int V1, int V2) { return arb[1][V1][V2]; }

컴파일 시 표준 에러 (stderr) 메시지

grader.c: In function 'int main()':
grader.c:15:6: warning: variable 'res' set but not used [-Wunused-but-set-variable]
  int res;
      ^~~
#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...