Submission #1043800

#TimeUsernameProblemLanguageResultExecution timeMemory
1043800arashMLGMaze (JOI23_ho_t3)C++17
100 / 100
747 ms710072 KiB
#include<bits/stdc++.h> #ifdef LOCAL #include "Essentials/algo/debug.h" #else #define debug(...) 69 #define debugArr(...) 69 #endif using namespace std; typedef long long ll; typedef pair<int,int> pii; typedef pair<ll,ll> pll; const int N = 6e6 + 23; const ll inf = 1e18; #define F first #define S second #define pb push_back #define kill(x) cout<<x<<endl, exit(0); #define all(x) x.begin(),x.end() #define sz(x) (int)x.size() #define lc (v << 1) #define rc ((v<<1) |1) int dx[] = {0,1,0,-1,1,1,-1,-1}; int dy[] = {1,0,-1,0,1,-1,-1,1}; int n,m,k; bool check(pii p) { return p.F >= 1 && p.F <= n && p.S >= 1 && p.S <= m; } vector<char> a[N]; vector<bool> mark[N]; vector<pii> sex; queue<pii> Q; void adj1(pii v) { if(mark[v.F][v.S]) return; if(a[v.F][v.S] == '#') { sex.pb(v); return; } mark[v.F][v.S] = true; for(int i= 0 ;i <4; i ++) { pii u = v; u.F += dx[i]; u.S += dy[i]; if(check(u)) Q.push(u); } } void adj2(pii v) { if(mark[v.F][v.S]) return; mark[v.F][v.S] = 1; for(int i= 0; i < 8; i ++) { pii u = v; u.F += dx[i]; u.S += dy[i]; if(check(u)) { sex.pb(u); if(i < 4) Q.push(u); } } } vector<int> layer; int32_t main() { cin.tie(nullptr)->sync_with_stdio(false); cin>>n>>m>>k; for(int i = 1; i <= n ;i ++) { a[i].resize(m+1); mark[i].resize(m+1); } int sx,sy,ex,ey; cin>>sx>>sy>>ex>>ey; for(int i = 1; i <= n ;i ++) for(int j = 1;j <= m ; j ++) { cin>>a[i][j]; } int ans =0; Q.push({sx,sy}); while(true) { while(sz(Q)) { pii v = Q.front(); Q.pop(); adj1(v); } if(mark[ex][ey]) break; ans ++; for(int i = 0 ;i< k ; i ++) { vector<pii> nw = sex; sex.clear(); for(pii x : nw) adj2(x); } sex.clear(); } cout<<ans << '\n'; return 0; } // Jumpsuit, Jumpsuit cover me! // Jumpsuit, Jumpsuit cover me!
#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...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...