#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
int main()
{
std::ios_base::sync_with_stdio(false);
std::cin.tie(nullptr);
int D=0;
int n;
long long wynik=0;
cin>>n;
vector<int> l(n);
for(int i=0;i<n;i++){
cin>>l[i];
}
long long max=-1;
long long maxWynik=-1;
vector<int> start;
int prev=l[n-1];
//start.push_back(0);
for(int i=0;i<n;i++){
if (prev>l[i] && l[i]<l[(i+1)%n]){
start.push_back(i);
}
prev = l[i];
}
if (start.size() == 0) start.push_back(0);
for (auto ii:start){
if (0) cout<<ii<<endl;
max=-1;
wynik=0;
for(int j=0;j<n;j++){
if (max<l[(j+ii)%n]) {wynik++;max=l[(j+ii)%n];
//cout<<(ii+j)<<" "<<wynik<<endl;
};
}
//cout<<(ii)<<" "<<wynik<<endl;
if (maxWynik<wynik)maxWynik=wynik;
}
if (D)cout<<"-------------"<<endl;
long long maxWynik2=-1;
if (D){
for(int i=0;i<n;i++){
max=-1;
wynik=0;
for(int j=0;j<n;j++){
if (max<l[(j+i)%n]) {wynik++;max=l[(j+i)%n];};
}
if (maxWynik2<wynik) maxWynik2=wynik;
}
}
cout<<maxWynik;
if (D) cout<<endl<<maxWynik2;
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 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 | #include <iostream> #include <vector> #include <algorithm> using namespace std; int main() { std::ios_base::sync_with_stdio(false); std::cin.tie(nullptr); int D=0; int n; long long wynik=0; cin>>n; vector<int> l(n); for(int i=0;i<n;i++){ cin>>l[i]; } long long max=-1; long long maxWynik=-1; vector<int> start; int prev=l[n-1]; //start.push_back(0); for(int i=0;i<n;i++){ if (prev>l[i] && l[i]<l[(i+1)%n]){ start.push_back(i); } prev = l[i]; } if (start.size() == 0) start.push_back(0); for (auto ii:start){ if (0) cout<<ii<<endl; max=-1; wynik=0; for(int j=0;j<n;j++){ if (max<l[(j+ii)%n]) {wynik++;max=l[(j+ii)%n]; //cout<<(ii+j)<<" "<<wynik<<endl; }; } //cout<<(ii)<<" "<<wynik<<endl; if (maxWynik<wynik)maxWynik=wynik; } if (D)cout<<"-------------"<<endl; long long maxWynik2=-1; if (D){ for(int i=0;i<n;i++){ max=-1; wynik=0; for(int j=0;j<n;j++){ if (max<l[(j+i)%n]) {wynik++;max=l[(j+i)%n];}; } if (maxWynik2<wynik) maxWynik2=wynik; } } cout<<maxWynik; if (D) cout<<endl<<maxWynik2; return 0; } |
English