#include <bits/stdc++.h>
using namespace std;
int n, x, err, err1, err2, err3, err4, lvl;
deque <int> q1;
deque <int> q2;
deque <int> q3;
deque <int> q4;
int solve (deque <int> q)
{
err=0;
lvl=0;
for (int i=1; i<n; i++)
{
if (q[i-1]==q[i])
{
q[i] = (q[i-1]>q[i+1] ? q[i-1]+1 : q[i+1]+1);
err++;
lvl++;
}
else if (q[i]>q[i-1])
{
if (lvl==0)
lvl++;
else
{
q[i] = (q[i-1]<q[i+1] ? q[i-1]-1 : q[i+1]-1);
lvl--;
err++;
}
}
else
{
{
if (lvl==1)
lvl--;
else
{
q[i] = (q[i-1]>q[i+1] ? q[i-1]+1 : q[i+1]+1);
lvl++;
err++;
}
}
}
}
return err;
}
int main() {
ios_base::sync_with_stdio(false);
cin.tie();
cout.tie();
cin>>n;
for (int i=0; i<n; i++)
{
cin>>x;
q1.push_back(x);
q2.push_back(-1*x);
q3.push_front(x);
q4.push_front(-1*x);
}
q1.push_back(0);
q2.push_back(0);
q3.push_back(0);
q4.push_back(0);
err1 = solve(q1);
err2 = solve(q2);
err3 = solve(q3);
err4 = solve(q4);
cout<<min({err1, err2, err3, err4})<<'\n';
}
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 | #include <bits/stdc++.h> using namespace std; int n, x, err, err1, err2, err3, err4, lvl; deque <int> q1; deque <int> q2; deque <int> q3; deque <int> q4; int solve (deque <int> q) { err=0; lvl=0; for (int i=1; i<n; i++) { if (q[i-1]==q[i]) { q[i] = (q[i-1]>q[i+1] ? q[i-1]+1 : q[i+1]+1); err++; lvl++; } else if (q[i]>q[i-1]) { if (lvl==0) lvl++; else { q[i] = (q[i-1]<q[i+1] ? q[i-1]-1 : q[i+1]-1); lvl--; err++; } } else { { if (lvl==1) lvl--; else { q[i] = (q[i-1]>q[i+1] ? q[i-1]+1 : q[i+1]+1); lvl++; err++; } } } } return err; } int main() { ios_base::sync_with_stdio(false); cin.tie(); cout.tie(); cin>>n; for (int i=0; i<n; i++) { cin>>x; q1.push_back(x); q2.push_back(-1*x); q3.push_front(x); q4.push_front(-1*x); } q1.push_back(0); q2.push_back(0); q3.push_back(0); q4.push_back(0); err1 = solve(q1); err2 = solve(q2); err3 = solve(q3); err4 = solve(q4); cout<<min({err1, err2, err3, err4})<<'\n'; } |
English