Submission #1137581

#TimeUsernameProblemLanguageResultExecution timeMemory
1137581SyedSohaib_123Text editor (CEOI24_editor)C++20
19 / 100
100 ms43528 KiB
#include <bits/stdc++.h> using namespace std; #define append push_back #define int long long const int N=1e3,LG=1e4; int mod=1e9+7; int mn[N][LG]; void solve(int tst) { int n; cin>>n; int a,b,x,y; cin>>a>>b>>x>>y; vector<int>v(n+1,0); int mx=0; for(int i=1;i<=n;i++){ cin>>v[i]; mx=max(mx,v[i]); v[i]++; } if(n<=2){ if(x==1){ cout<<min({abs(b-y),y+1-(a==2),v[1]-y+2-(a==2)}); } else if(x==2){ cout<<(a==1)<<endl; } return; } if(mx<=1e4 and n<=1e3){ mn[a][b]=1; deque<pair<int,int>>d; d.append({a,b}); while(d.size()){ auto [i,j]=d[0]; d.pop_front(); //up if(i>1 and !mn[i-1][min(v[i-1],j)]){ mn[i-1][min(v[i-1],j)]=mn[i][j]+1; d.append({i-1,min(v[i-1],j)}); } // down if(i<n and !mn[i+1][min(v[i+1],j)]){ mn[i+1][min(v[i+1],j)]=mn[i][j]+1; d.append({i+1,min(v[i+1],j)}); } //-> if(!(i==n and j==v[n])){ if(j!=v[i]){ if(!mn[i][j+1]){ mn[i][j+1]=mn[i][j]+1; d.append({i,j+1}); } } else{ if(!mn[i+1][1]){ mn[i+1][1]=mn[i][j]+1; d.append({i+1,1}); } } } //<- if(!(i==1 and j==1)){ if(j!=1){ if(!mn[i][j-1]){ mn[i][j-1]=mn[i][j]+1; d.append({i,j-1}); } } else{ if(!mn[i-1][v[i-1]]){ mn[i-1][v[i-1]]=mn[i][j]+1; d.append({i-1,v[i-1]}); } } } } } cout<<mn[x][y]-1<<endl; } signed main() { ios::sync_with_stdio(0); cin.tie(0);cout.tie(0); int t = 1; // cin >> t; for (int i = 0; i < t; i++) { solve(i); } }
#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...