This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
#include "wombats.h"
#include <bits/stdc++.h>
using namespace std;
int n,m,r[5000][200],d[5000][200];
void cmin(int&a,int b) {if(a>b)a=b;}
struct ini
{
int s[200][200];
bool go;
};
ini gen(int t)
{
//r[t],r[t+1],d[t]
ini u; u.go=1;
for(int i=0;i<m;++i)
{
u.s[i][i]=d[t][i];
for(int j=i;j+1<m;++j)
u.s[i][j+1]=u.s[i][j]+r[t+1][j];
for(int j=i-1;j>=0;--j)
u.s[i][j]=u.s[i][j+1]+r[t+1][j];
}
for(int i=0;i<m;++i)
{
for(int j=0;j+1<m;++j)
cmin(u.s[j+1][i],u.s[j][i]+r[t][j]);
for(int j=m-2;j>=0;--j)
cmin(u.s[j][i],u.s[j+1][i]+r[t][j]);
}
return u;
}
ini*A,*B,*C; int X;
void go(int l,int r,int ql,int qr)
{
if(l>r) return;
int m=(l+r)/2,mi=2.1e9,ms;
for(int t=ql;t<=qr;++t)
{
int v=A->s[X][t]+B->s[t][m];
if(v<mi) mi=v,ms=t;
}
C->s[X][m]=mi;
go(l,m-1,ql,ms);
go(m+1,r,ms,qr);
}
ini operator * (ini&a,ini&b)
{
if(!a.go) return b;
if(!b.go) return a;
ini u; u.go=1;
A=&a,B=&b,C=&u;
for(int i=0;i<m;++i)
X=i,go(0,m-1,0,m-1);
return u;
}
void init(int R, int C, int H[5000][200], int V[5000][200]) {
n=R; m=C;
memcpy(r,H,sizeof r);
memcpy(d,V,sizeof d);
}
void changeH(int P, int Q, int W) {
r[P][Q]=W;
}
void changeV(int P, int Q, int W) {
d[P][Q]=W;
}
int escape(int V1, int V2) {
ini x; x.go=0;
for(int t=0;t<n-1;++t)
{
auto u=gen(t);
x=x*u;
}
return x.s[V1][V2];
}
//prototype.
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;
^~~
wombats.cpp: In function 'void go(int, int, int, int)':
wombats.cpp:43:4: warning: 'ms' may be used uninitialized in this function [-Wmaybe-uninitialized]
go(l,m-1,ql,ms);
~~^~~~~~~~~~~~~| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |