Submission #1099319

#TimeUsernameProblemLanguageResultExecution timeMemory
1099319theSkeletonTracks in the Snow (BOI13_tracks)C++17
34.58 / 100
2136 ms955332 KiB
#pragma GCC target("avx2") #pragma GCC optimization("O3") #pragma GCC optimization("unroll-loops") #include<bits/stdc++.h> #define space <<' '<< #define endl '\n' #define inf 1e14 #define F first #define S second #define PB push_back #define PF push_front #define md(a) ((a+mod)%mod) #define MP(a,b) make_pair(a,b) #define MT(a,b,c) make_tuple(a,b,c) typedef long long ll; using namespace std; template<typename t> using heap= priority_queue<t,vector<t>,greater<t>>; const int mx = 4005; int h,w; bool seen[mx][mx]; char state[mx][mx]; deque<pair<int,int>> l[2]; pair<int,int> nei[]={MP(0,1),MP(0,-1),MP(1,0),MP(-1,0)}; bool c(int i,int j){ return (i<0||h<=i||j<0||w<=j); } int main(){ std::ios::sync_with_stdio(0); cin.tie(0);cout.tie(0); cin>>h>>w; for(int i=0;i<h;i++) for(int j=0;j<w;j++) cin>>state[i][j]; int pc=0,cnt=0; char cc=state[h-1][w-1]; l[pc].PB(MP(h-1,w-1)); if(cc=='.'){ cout<<0; return 0; } while(!l[pc].empty()){ pair<int,int> r,d=l[pc].back(); seen[d.F][d.S]=1; l[pc].pop_back(); for(int i=0;i<4;i++){ r=MP(d.F+nei[i].F,d.S+nei[i].S); if(!c(r.F,r.S)) if (state[r.F][r.S]!='.'&&!seen[r.F][r.S]){ if(state[r.F][r.S]==cc) l[pc].push_front(MP(r.F,r.S)); else l[!pc].push_front(MP(r.F,r.S)); } } if(l[pc].empty()){ pc=!pc;cnt++; cc=((cc=='F')?'R':'F'); } } cout<<cnt; return 0; }

Compilation message (stderr)

tracks.cpp:2: warning: ignoring '#pragma GCC optimization' [-Wunknown-pragmas]
    2 | #pragma GCC optimization("O3")
      | 
tracks.cpp:3: warning: ignoring '#pragma GCC optimization' [-Wunknown-pragmas]
    3 | #pragma GCC optimization("unroll-loops")
      |
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...