#include <iostream>
#define MAXN 1000000
using namespace std;
int a[MAXN];
int result(int n, int start) {
int r = 1, best_so_far = a[start];
for (int i = (start + 1) % n, j=0; j < n; j++, i = (i+1)%n)
if (a[i] > best_so_far) {
best_so_far = a[i];
r++;
}
return r;
}
int main() {
int n;
cin >> n;
for (int i=0; i < n; i++)
cin >> a[i];
int res = result(n, 0);
for (int i = 0; i < n-1; i++) {
int next = (i+1)%n;
if (a[i] > a[next]) {
int r = result(n, i+1);
if (r > res)
res = r;
}
}
cout << res << '\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 | #include <iostream> #define MAXN 1000000 using namespace std; int a[MAXN]; int result(int n, int start) { int r = 1, best_so_far = a[start]; for (int i = (start + 1) % n, j=0; j < n; j++, i = (i+1)%n) if (a[i] > best_so_far) { best_so_far = a[i]; r++; } return r; } int main() { int n; cin >> n; for (int i=0; i < n; i++) cin >> a[i]; int res = result(n, 0); for (int i = 0; i < n-1; i++) { int next = (i+1)%n; if (a[i] > a[next]) { int r = result(n, i+1); if (r > res) res = r; } } cout << res << '\n'; return 0; } |
English