Submission #768808

#TimeUsernameProblemLanguageResultExecution timeMemory
7688081075508020060209tcPatkice II (COCI21_patkice2)C++14
55 / 110
949 ms91416 KiB
#include<bits/stdc++.h> using namespace std; #define int long long #define X first #define Y second int n;int m; int ok(int i,int j){ if(i>=1&&i<=n&&j>=1&&j<=m){return 1;} return 0; } int dir[5]={0,1,0,-1,0}; char dc[5]={'!','>','v','<','^'}; string gr[2010]; int dis[2010][2010]; int vis[2010][2010]; signed main(){ cin.tie(0); ios_base::sync_with_stdio(0); cin>>n>>m; for(int i=1;i<=n;i++){ cin>>gr[i]; gr[i]="*"+gr[i]; } //deque<pair<int,int>>q; priority_queue<pair<int,pair<int,int>>,vector<pair<int,pair<int,int> >>,greater<pair<int,pair<int,int> >>>q; for(int i=1;i<=n;i++){ for(int j=1;j<=m;j++){ dis[i][j]=1e9; if(gr[i][j]=='o'){ q.push({0,{i,j}}); dis[i][j]=0; } } } while(q.size()){ int nwx=q.top().second.first; int nwy=q.top().second.second; q.pop(); if(vis[nwx][nwy]){continue;} vis[nwx][nwy]=1; if(gr[nwx][nwy]=='o'){ for(int i=1;i<=4;i++){ int x=nwx+dir[i-1]; int y=nwy+dir[i]; if(!ok(x,y)||dis[x][y]<=dis[nwx][nwy]){continue;} dis[x][y]=0; q.push({0,{x,y}}); } continue; } for(int i=1;i<=4;i++){ int x=nwx+dir[i-1]; int y=nwy+dir[i]; int w=dis[nwx][nwy]; if(gr[nwx][nwy]!=dc[i]){ w++; } if(!ok(x,y)||dis[x][y]<=w){continue;} if(gr[x][y]==dc[i]){ dis[x][y]=w; q.push({dis[x][y],{x,y}}); }else{ dis[x][y]=w; q.push({dis[x][y],{x,y}}); } } } /* for(int i=1;i<=n;i++){ for(int j=1;j<=m;j++){ cout<<dis[i][j]<<" "; }cout<<endl; } */ for(int i=1;i<=n;i++){ for(int j=1;j<=m;j++){ if(gr[i][j]=='x'){ cout<<dis[i][j]<<endl; } } } for(int i=1;i<=n;i++){ for(int j=1;j<=m;j++){ cout<<gr[i][j]; }cout<<endl; } }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...