#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; } |