#include <bits/stdc++.h>
#define N 1000311
using namespace std;
int n;
int a[N];
int b[N];
int me;
int mi;
stack<int> s;
int w;
int main() {
ios::sync_with_stdio(0);
cin.tie(NULL);
cout.tie(NULL);
me = 0;
mi = 0;
w = 0;
cin >> n;
for (int i = 0; i < n; i++) {
cin >> b[i];
if (b[i] > me) {
me = b[i];
mi = i;
}
}
for (int i = 0; i < n; i++) {
a[i] = b[(i + mi + 1) % n];
}
for (int i = n - 1; i >= 0; i--) {
while (!s.empty() && a[i] >= s.top()) {
s.pop();
}
s.push(a[i]);
w = max(w, (int)s.size());
}
cout << w << "\n";
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 | #include <bits/stdc++.h> #define N 1000311 using namespace std; int n; int a[N]; int b[N]; int me; int mi; stack<int> s; int w; int main() { ios::sync_with_stdio(0); cin.tie(NULL); cout.tie(NULL); me = 0; mi = 0; w = 0; cin >> n; for (int i = 0; i < n; i++) { cin >> b[i]; if (b[i] > me) { me = b[i]; mi = i; } } for (int i = 0; i < n; i++) { a[i] = b[(i + mi + 1) % n]; } for (int i = n - 1; i >= 0; i--) { while (!s.empty() && a[i] >= s.top()) { s.pop(); } s.push(a[i]); w = max(w, (int)s.size()); } cout << w << "\n"; return 0; } |
English