Submission #126093

#TimeUsernameProblemLanguageResultExecution timeMemory
126093nxteruWombats (IOI13_wombats)C++14
12 / 100
336 ms262148 KiB
#include "wombats.h" #include <bits/stdc++.h> using namespace std; #define INF 1000000001 struct node{ int n,d[100][100]; void ini(int x){ n=x; for(int i=0;i<n;i++){ for(int j=0;j<n;j++){ if(i==j)d[i][j]=0; else d[i][j]=INF; } } } node plus(node &q){ node res; res.ini(n); int a[100][100]; for(int i=n-1;i>-n;i--){ for(int j=max(-i,0);i+j<n&&j<n;j++){ int x,y; if(j-1>=0)x=a[i+j][j-1]; else x=0; if(i+j+1<n)y=a[i+j+1][j]; else y=n-1; for(int k=x;k<=y;k++)if(d[i+j][k]+q.d[k][j]<d[i+j][x]+q.d[x][j])x=k; a[i+j][j]=x; res.d[i+j][j]=min(d[i+j][x]+q.d[x][j],INF); } } return res; } }; struct SEG{ int n,k,id[1<<14]; node seg[10011]; void ini(int x){ n=x; for(int i=0;i<1<<14;i++)id[i]=-1; k=0; for(int i=0;i<5000;i++){ int a=i+(1<<13)-1; if(id[a]==-1)id[a]=k++; while(a>0){ a=(a-1)/2; if(id[a]==-1)id[a]=k++; if(id[a*2+1]==-1)id[a*2+1]=k++; if(id[a*2+2]==-1)id[a*2+2]=k++; } } for(int i=0;i<k;i++)seg[i].ini(n); } void up(int a,node &q){ a+=(1<<13)-1; seg[id[a]]=q; while(a>0){ a=(a-1)/2; seg[id[a]]=seg[id[a*2+1]].plus(seg[id[a*2+2]]); } } int dis(int a,int b){ return seg[id[0]].d[a][b]; } }; int h[5000][100],w[5000][100],n,m,p[100]; SEG s; void change(int x){ p[0]=0; for(int i=1;i<m;i++)p[i]=p[i-1]+h[x][i-1]; node res; res.ini(m); for(int i=0;i<m;i++){ for(int j=0;j<m;j++){ res.d[i][j]=p[max(i,j)]-p[min(i,j)]+w[x][j]; } } s.up(x,res); } void init(int R, int C, int H[5000][200], int V[5000][200]) { n=R,m=C; s.ini(m); for(int i=0;i<n;i++)for(int j=0;j<m-1;j++)h[i][j]=H[i][j]; for(int i=0;i<n-1;i++)for(int j=0;j<m;j++)w[i][j]=V[i][j]; for(int i=0;i<n;i++)change(i); } void changeH(int a, int b, int x) { h[a][b]=x; change(a); } void changeV(int a, int b, int x) { w[a][b]=x; change(a); } int escape(int a, int b) { return s.dis(a,b); }

Compilation message (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...