Submission #1066233

#TimeUsernameProblemLanguageResultExecution timeMemory
1066233Dennis_JasonMaze (JOI23_ho_t3)C++14
100 / 100
491 ms123744 KiB
#include <bits/stdc++.h> #define NMAX 1010 //#define int long long #define pb push_back #define eb emplace_back #define MOD 1000000007 #define nl '\n' #define INF 1000000007 #define LLONG_MAX 9223372036854775807 #define pii pair<int,int> #define tpl tuple<int,int,int,int> //#pragma GCC optimize("O3") using namespace std; ifstream fin("aib.in"); ofstream fout("aib.out"); /* * * ----------------DEMONSTRATION------------------- 1 2 2 3 4 2 1 2 3 4 5 6 1 2 3 4 5 6 1 2 3 4 5 6 1 2 4 5 ---------------------END------------------------ */ int r,c,n; int i_s,j_s,i_f,j_f; int di[]={1,-1,0,0}; int dj[]={0,0,1,-1}; bool inmat(int i,int j) { return i>=1 && i<=r && j>=1 && j<=c; } signed main() { ios_base::sync_with_stdio(false); cin.tie(NULL); cin>>r>>c>>n; cin>>i_s>>j_s; cin>>i_f>>j_f; vector<vector<int>>mat(r+1,vector<int>(c+1)); vector<vector<int>>dist(r+1,vector<int>(c+1,-1)); queue<tpl>white,black; for(int i=1;i<=r;++i) { for(int j=1;j<=c;++j) { char x; cin>>x; if(x=='.') { mat[i][j]=0; } else { mat[i][j]=1; } } } dist[i_s][j_s]=0; white.push({i_s,j_s,0,0}); while(!white.empty() || !black.empty()) { while(!black.empty()) { auto [i,j,x,y]=black.front(); black.pop(); // cout<<i<<" "<<j<<"b"<<nl; if(x==0 || y==0) { white.push({i,j,0,0}); } for(int d=0;d<4;++d) { int inou=i+di[d]; int jnou=j+dj[d]; int pas_x=x-abs(di[d]); int pas_y=y-abs(dj[d]); if((pas_x>=0 && pas_y>=0)&& inmat(inou,jnou) && dist[inou][jnou]==-1) { dist[inou][jnou]=dist[i][j]; black.push({inou,jnou,pas_x,pas_y}); } } } while(!white.empty()) { auto [i,j,x,y]=white.front(); white.pop(); // cout<<i<<" "<<j<<"w"<<nl; for(int d=0;d<4;++d) { int inou=i+di[d]; int jnou=j+dj[d]; if(inmat(inou,jnou) && dist[inou][jnou]==-1) { if(mat[inou][jnou]==1) { dist[inou][jnou]=dist[i][j]+1; black.push({inou,jnou,n-1,n-1}); } else { dist[inou][jnou]=dist[i][j]; white.push({inou,jnou,0,0}); } } } } } cout<<dist[i_f][j_f]; return 0; }

Compilation message (stderr)

Main.cpp:9: warning: "LLONG_MAX" redefined
    9 | #define LLONG_MAX 9223372036854775807
      | 
In file included from /usr/lib/gcc/x86_64-linux-gnu/10/include/limits.h:195,
                 from /usr/lib/gcc/x86_64-linux-gnu/10/include/syslimits.h:7,
                 from /usr/lib/gcc/x86_64-linux-gnu/10/include/limits.h:34,
                 from /usr/include/c++/10/climits:42,
                 from /usr/include/x86_64-linux-gnu/c++/10/bits/stdc++.h:39,
                 from Main.cpp:1:
/usr/include/limits.h:135: note: this is the location of the previous definition
  135 | #  define LLONG_MAX __LONG_LONG_MAX__
      | 
Main.cpp: In function 'int main()':
Main.cpp:69:18: warning: structured bindings only available with '-std=c++17' or '-std=gnu++17'
   69 |             auto [i,j,x,y]=black.front();
      |                  ^
Main.cpp:93:18: warning: structured bindings only available with '-std=c++17' or '-std=gnu++17'
   93 |             auto [i,j,x,y]=white.front();
      |                  ^
#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...