#include <bits/stdc++.h>
using namespace std;
constexpr int MAXN = 1e6 + 17;
int dzwieki[MAXN];
int main()
{
cin.tie(0);
cout.tie(0);
ios_base::sync_with_stdio(0);
int n;
cin >> n;
for(int i = 0; i < n; ++i)
cin >> dzwieki[i];
int dgn = 1;
pair<int, int> maxx = {0, -1};
for(int i = 1; i < n; ++i)
{
if((dgn == 0 && dzwieki[i] > dzwieki[i-1]) || (dgn == 2 && dzwieki[i] < dzwieki[i-1]))
{
if(maxx.second - maxx.first < i - maxx.second|| maxx.second == -1)
{
maxx.first = maxx.second + 1;
maxx.second = i-1;
}
dgn = 1;
continue;
}
if(dgn == 1 && dzwieki[i] > dzwieki[i-1])
dgn = 2;
if(dgn == 1 && dzwieki[i] < dzwieki[i-1])
dgn = 0;
}
if(maxx.second - maxx.first < n - maxx.second || maxx.second == -1)
{
maxx.first = maxx.second + 1;
maxx.second = n-1;
}
int odp = 0;
bool c = 1;
for(int i = maxx.second+1; i < n; ++i)
{
if(dzwieki[i] < dzwieki[i-1])
{
++odp;
c = 0;
}
if(dzwieki[i] > dzwieki[i-1])
c = 0;
}
if((c && maxx.second+1 != n) || dzwieki[maxx.first] == dzwieki[maxx.second])
++odp;
for(int i = maxx.first-1; i >= 0; --i)
{
if(dzwieki[i] < dzwieki[i+1])
{
++odp;
c = 0;
}
if(dzwieki[i] > dzwieki[i+1])
c = 0;
}
if((c && maxx.first != 0) || dzwieki[maxx.first] == dzwieki[maxx.second])
++odp;
cout << odp;
}
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 | #include <bits/stdc++.h> using namespace std; constexpr int MAXN = 1e6 + 17; int dzwieki[MAXN]; int main() { cin.tie(0); cout.tie(0); ios_base::sync_with_stdio(0); int n; cin >> n; for(int i = 0; i < n; ++i) cin >> dzwieki[i]; int dgn = 1; pair<int, int> maxx = {0, -1}; for(int i = 1; i < n; ++i) { if((dgn == 0 && dzwieki[i] > dzwieki[i-1]) || (dgn == 2 && dzwieki[i] < dzwieki[i-1])) { if(maxx.second - maxx.first < i - maxx.second|| maxx.second == -1) { maxx.first = maxx.second + 1; maxx.second = i-1; } dgn = 1; continue; } if(dgn == 1 && dzwieki[i] > dzwieki[i-1]) dgn = 2; if(dgn == 1 && dzwieki[i] < dzwieki[i-1]) dgn = 0; } if(maxx.second - maxx.first < n - maxx.second || maxx.second == -1) { maxx.first = maxx.second + 1; maxx.second = n-1; } int odp = 0; bool c = 1; for(int i = maxx.second+1; i < n; ++i) { if(dzwieki[i] < dzwieki[i-1]) { ++odp; c = 0; } if(dzwieki[i] > dzwieki[i-1]) c = 0; } if((c && maxx.second+1 != n) || dzwieki[maxx.first] == dzwieki[maxx.second]) ++odp; for(int i = maxx.first-1; i >= 0; --i) { if(dzwieki[i] < dzwieki[i+1]) { ++odp; c = 0; } if(dzwieki[i] > dzwieki[i+1]) c = 0; } if((c && maxx.first != 0) || dzwieki[maxx.first] == dzwieki[maxx.second]) ++odp; cout << odp; } |
English