#include <cstdio>
#include <algorithm>
#include <set>
using namespace std;
#define MAX 1000100
int n;
int a[MAX];
int r[MAX];
int main() {
scanf("%d",&n);
for(int i=0;i<n;i++) {
scanf("%d",&a[i]);
}
auto *it = std::max_element(&a[0], &a[n]);
int idx = std::distance(&a[0], it);
set<int> s;
s.insert(a[idx]);
for(int i=(idx-1+n)%n; i!=idx; i=(i-1+n)%n) {
s.erase(s.begin(), s.upper_bound(a[i]));
s.insert(a[i]);
r[i] = s.size();
}
auto *itr = std::max_element(&r[0], &r[n]);
printf("%d\n",*itr);
}
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 | #include <cstdio> #include <algorithm> #include <set> using namespace std; #define MAX 1000100 int n; int a[MAX]; int r[MAX]; int main() { scanf("%d",&n); for(int i=0;i<n;i++) { scanf("%d",&a[i]); } auto *it = std::max_element(&a[0], &a[n]); int idx = std::distance(&a[0], it); set<int> s; s.insert(a[idx]); for(int i=(idx-1+n)%n; i!=idx; i=(i-1+n)%n) { s.erase(s.begin(), s.upper_bound(a[i])); s.insert(a[i]); r[i] = s.size(); } auto *itr = std::max_element(&r[0], &r[n]); printf("%d\n",*itr); } |
English