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>
typedef long long ll;
#define pb push_back
#define mp make_pair
#define fi first
#define se second
using namespace std;
ll n,m,i,j,x[5050][220],y[5050][220],jum,d[2][5050][2],te,b[5050][220];
void upd()
{
ll ii;
d[0][n-1][0]=0;
d[0][n-1][1]=x[n-1][0];
d[1][n-1][1]=0;
d[1][n-1][0]=x[n-1][0];
for(ii=n-2;ii>=0;ii--)
{
d[0][ii][0]=min(d[0][ii+1][0]+y[ii][0],d[0][ii+1][1]+y[ii][1]+x[ii][0]);
d[0][ii][1]=min(d[0][ii+1][1]+y[ii][1],d[0][ii+1][0]+y[ii][0]+x[ii][0]);
d[1][ii][0]=min(d[1][ii+1][0]+y[ii][0],d[1][ii+1][1]+y[ii][1]+x[ii][0]);
d[1][ii][1]=min(d[1][ii+1][1]+y[ii][1],d[1][ii+1][0]+y[ii][0]+x[ii][0]);
}
//for(ii=0;ii<n;ii++)
// cout<<ii<<" "<<d[0][ii][0]<<" "<<d[0][ii][1]<<"\n";
}
void init(int R, int C, int H[5000][200], int V[5000][200])
{
n=R;
m=C;
for(i=0;i<n;i++)
for(j=0;j<(m-1);j++)
x[i][j]=H[i][j];
for(i=0;i<(n-1);i++)
for(j=0;j<m;j++)
y[i][j]=V[i][j];
if(m==2)
{
upd();
}
else
if(m==1)
{
for(i=0;i<(n-1);i++)
jum+=y[i][0];
}
/* ... */
}
void changeH(int P, int Q, int W)
{
if(m==2)
{
x[P][Q]=W;
upd();
}
else
x[P][Q]=W;
/* ... */
}
void changeV(int P, int Q, int W) {
if(m==2)
{
y[P][Q]=W;
upd();
}
else
if(m==1)
{
jum-=y[P][Q];
y[P][Q]=W;
jum+=y[P][Q];
}
else
y[P][Q]=W;
/* ... */
}
int escape(int V1, int V2)
{
if(m==2)
{
return d[V2][0][V1];
}
else
if(m==1)
{
return jum;
}
else
{
priority_queue<pair<ll,pair<ll,ll> > > pq;
pq.push(mp(0,mp(0,V1)));
te++;
while(!pq.empty())
{
ll jar=-pq.top().fi;
ll X=pq.top().se.fi;
ll Y=pq.top().se.se;
pq.pop();
if(b[X][Y]==te)continue;
b[X][Y]=te;
if(X==n-1&&Y==V2)
return jar;
if(Y>0)
if(b[X][Y-1]!=te)
pq.push(mp(-jar-x[X][Y-1],mp(X,Y-1)));
if(Y<(m-1))
if(b[X][Y+1]!=te)
pq.push(mp(-jar-x[X][Y],mp(X,Y+1)));
if(X<(n-1))
if(b[X+1][Y]!=te)
pq.push(mp(-jar-y[X][Y],mp(X+1,Y)));
}
}
}
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 'int escape(int, int)':
wombats.cpp:117:1: warning: control reaches end of non-void function [-Wreturn-type]
}
^
# | 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... |