Submission #1247099

#TimeUsernameProblemLanguageResultExecution timeMemory
1247099StefanSebez웜뱃 (IOI13_wombats)C++20
37 / 100
20082 ms21376 KiB
#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 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...