#include <algorithm>
#include <cstdio>
#include <stack>
using namespace std;
#define FOR(i,a,b) for(int i=(a);i<(b);++i)
#define REP(i,n) FOR(i,0,n)
#define SIZE(c) ((int)(c).size())
#define INT(x) int x; scanf("%d", &x)
int a[1000000];
int main() {
INT(n);
REP(i,n) scanf("%d", &a[i]);
int h = 0;
REP(i,n) if (a[i] > a[h]) h = i;
stack<int> s;
int i = h, r = 0;
do {
while (!s.empty() && a[i] >= s.top()) s.pop();
s.push(a[i]);
r = max(r, SIZE(s));
i = (n + i - 1) % n;
} while (i != h);
printf("%d\n", r);
}
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 | #include <algorithm> #include <cstdio> #include <stack> using namespace std; #define FOR(i,a,b) for(int i=(a);i<(b);++i) #define REP(i,n) FOR(i,0,n) #define SIZE(c) ((int)(c).size()) #define INT(x) int x; scanf("%d", &x) int a[1000000]; int main() { INT(n); REP(i,n) scanf("%d", &a[i]); int h = 0; REP(i,n) if (a[i] > a[h]) h = i; stack<int> s; int i = h, r = 0; do { while (!s.empty() && a[i] >= s.top()) s.pop(); s.push(a[i]); r = max(r, SIZE(s)); i = (n + i - 1) % n; } while (i != h); printf("%d\n", r); } |
English