Submission #1137494

#TimeUsernameProblemLanguageResultExecution timeMemory
1137494ghammazhassanText editor (CEOI24_editor)C++20
30 / 100
533 ms325272 KiB
// #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 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...