// PA2026, @mjm, r4c-nas
#include <cstdio>
#include <cmath>
#include <vector>
#include <queue>
#include <set>
#include <unordered_map>
using namespace std;
using lol = long long;
int nextInt() { int n; scanf("%d", &n); return n; }
lol nextLol() { lol n; scanf("%lld", &n); return n; }
inline lol myMax(lol a, lol b) { return a >= b ? a : b; }
inline int myMin(int a, int b) { return a <= b ? a : b; }
int solve() {
int n = nextInt();
vector<int> v(n * 2);
deque<int> best;
v[0] = v[n] = nextInt();
best.push_back(n);
for (int i = 1; i < n; ++i) {
v[i] = v[n + i] = nextInt();
if (v[i] > v[best.back()])
best.push_back(n + i);
}
if (n <= 2)
return v[0] == v[1] ? 1 : 2;
int res = best.size();
for (int i = n - 1; i > 0; --i) {
if (best.back() == n + i)
best.pop_back();
while (!best.empty() && v[i] >= v[best.front()])
best.pop_front();
best.push_front(i);
if (best.size() > res)
res = best.size();
}
return res;
}
int main() {
int res = solve();
printf("%d\n", res);
return 0;
}
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 | // PA2026, @mjm, r4c-nas #include <cstdio> #include <cmath> #include <vector> #include <queue> #include <set> #include <unordered_map> using namespace std; using lol = long long; int nextInt() { int n; scanf("%d", &n); return n; } lol nextLol() { lol n; scanf("%lld", &n); return n; } inline lol myMax(lol a, lol b) { return a >= b ? a : b; } inline int myMin(int a, int b) { return a <= b ? a : b; } int solve() { int n = nextInt(); vector<int> v(n * 2); deque<int> best; v[0] = v[n] = nextInt(); best.push_back(n); for (int i = 1; i < n; ++i) { v[i] = v[n + i] = nextInt(); if (v[i] > v[best.back()]) best.push_back(n + i); } if (n <= 2) return v[0] == v[1] ? 1 : 2; int res = best.size(); for (int i = n - 1; i > 0; --i) { if (best.back() == n + i) best.pop_back(); while (!best.empty() && v[i] >= v[best.front()]) best.pop_front(); best.push_front(i); if (best.size() > res) res = best.size(); } return res; } int main() { int res = solve(); printf("%d\n", res); return 0; } |
English