#include "wombats.h"
#include <bits/stdc++.h>
using namespace std;
#define fi first
#define se second
#define pb push_back
#define ll long long
#define ld long double
const int N=5010,M=210;
int n,m;
int Levo[N][M],Desno[N][M],Dole[N][M];
void init(int R, int C, int H[5000][200], int V[5000][200]) {
n=R,m=C;
for(int i=0;i<R;i++){
for(int j=0;j<C;j++){
Desno[i][j]=H[i][j];
Levo[i][j+1]=H[i][j];
Dole[i][j]=V[i][j];
}
}
}
void changeH(int P, int Q, int W) {
Desno[P][Q]=Levo[P][Q+1]=W;
}
void changeV(int P, int Q, int W) {
Dole[P][Q]=W;
}
int escape(int V1, int V2) {
priority_queue<array<int,3>>pq;
int dist[n+10][m+10];
for(int i=0;i<n;i++) for(int j=0;j<m;j++) dist[i][j]=1e9;
dist[0][V1]=0;
pq.push({dist[0][V1],0,V1});
while(!pq.empty()){
array<int,3>nesto=pq.top();pq.pop();
int u=nesto[1],v=nesto[2];
if(v-1>=0&&dist[u][v-1]>dist[u][v]+Levo[u][v]){
dist[u][v-1]=dist[u][v]+Levo[u][v];
pq.push({-dist[u][v-1],u,v-1});
}
if(v+1<m&&dist[u][v+1]>dist[u][v]+Desno[u][v]){
dist[u][v+1]=dist[u][v]+Desno[u][v];
pq.push({-dist[u][v+1],u,v+1});
}
if(u+1<n&&dist[u+1][v]>dist[u][v]+Dole[u][v]){
dist[u+1][v]=dist[u][v]+Dole[u][v];
pq.push({-dist[u+1][v],u+1,v});
}
}
return dist[n-1][V2];
}
# | 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... |