// #include <bits/stdc++.h>
#include <iostream>
#include <cmath>
#include <algorithm>
#include <map>
#include <vector>
#include <iomanip>
#include <string>
#include <queue>
#include <set>
using namespace std;
#define int long long
#define endl "\n";
const int N=2e5+5;
const int M=1e9+7;
void solve()
{
int n,sl,sc,el,ec;
cin >> n >> sl >> sc >> el >> ec;
vector<int>ai(n);
for (int i=0;i<n;i++){
cin >> ai[i];
}
bool f=1;
for (int i=0;i<n-2;i++){
if (ai[i]!=ai[i+1]){
f=0;
}
}
if (f or n<=2){
int c=abs(sl-el)+abs(sc-ec);
if (el>1){
c=min(c,abs(el-1-sl)+ec+ai[0]+1-sc);
}
if (el<n-1){
c=min(c,abs(el+1-sl)+ai[0]+1-ec+sc);
}
c=min(c,2*n-sl-el+ec-1);
c=min(c,2*n-sl-el+ai[0]+1-ec);
cout << c << endl;
return;
}
vector<int>p;
int c=0;
p.push_back(0);
for (int i=0;i<n;i++){
c+=ai[i]+1;
p.push_back(c);
}
vector<vector<int>>a(p[n]+1);
for (int i=0;i<n;i++){
for (int j=1;j<=ai[i]+1;j++){
if (i!=0 or j!=1){
a[p[i]+j].push_back(p[i]+j-1);
}
if (i!=0){
a[p[i]+j].push_back(min(p[i-1]+j,p[i]));
}
if (i!=n-1){
a[p[i]+j].push_back(min(p[i+1]+j,p[i+2]));
a[p[i]+j].push_back(p[i]+j+1);
}
}
}
int p1=p[sl-1]+sc;
int p2=p[el-1]+ec;
vector<int>vi(p[n]+1);
vector<int>di(p[n]+1);
queue<int>o;
o.push(p1);
vi[p1]=1;
while(!o.empty()){
int h=o.front();
o.pop();
for (int i:a[h]){
if (!vi[i]){
vi[i]=1;
o.push(i);
di[i]=di[h]+1;
}
}
}
cout << di[p2] << endl;
}
signed main()
{
ios::sync_with_stdio(0);//DO NOT USE IN INTERACTIVE
cin.tie(0), cout.tie(0);//DO NOT USE IN INTERACTIVE
cout << fixed<<setprecision(9);
int t=1;
// cin >> t;
for (int _=1;_<=t;_++){
solve();
}
}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |