#include <bits/stdc++.h>
#define nl '\n'
using namespace std;
int main()
{
cin.tie(0)->sync_with_stdio(0);
int n;
cin>>n;
vector<int> arr2(n);
for(auto &i: arr2){ cin>>i; }
int maxpos = n-1;
for(int i=n-1; i>=0; i--){
if(arr2[i] > arr2[maxpos]){ maxpos = i; }
}
vector<int> arr(n);
for(int i=0; i<n; i++){
arr[(i+n-1-maxpos)%n] = arr2[i];
}
/*for(int i=0; i<n; i++){
cerr<<arr[i]<<' ';
}
cerr<<nl;*/
int res = 0;
vector<int> st;
for(int i=n-1; i>=0; i--){
while(st.size() && arr[i] >= st.back()) st.pop_back();
st.push_back(arr[i]);
res = max(res, (int)st.size());
}
cout<<res<<nl;
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 | #include <bits/stdc++.h> #define nl '\n' using namespace std; int main() { cin.tie(0)->sync_with_stdio(0); int n; cin>>n; vector<int> arr2(n); for(auto &i: arr2){ cin>>i; } int maxpos = n-1; for(int i=n-1; i>=0; i--){ if(arr2[i] > arr2[maxpos]){ maxpos = i; } } vector<int> arr(n); for(int i=0; i<n; i++){ arr[(i+n-1-maxpos)%n] = arr2[i]; } /*for(int i=0; i<n; i++){ cerr<<arr[i]<<' '; } cerr<<nl;*/ int res = 0; vector<int> st; for(int i=n-1; i>=0; i--){ while(st.size() && arr[i] >= st.back()) st.pop_back(); st.push_back(arr[i]); res = max(res, (int)st.size()); } cout<<res<<nl; return 0; } |
English