#include <bits/stdc++.h> using namespace std; int t[1000009]; pair<int,int>p[1000009]; int main() { int n,m=0; int w=2; cin>>n; for(int i=0;i<n;++i){ cin>>t[i]; m=max(m,t[i]); p[i].first=t[i]; p[i].second=i; } int med=2*m+1; sort(p,p+n); int mi,mx; mi=p[n-1].second; mx=p[n-1].second; for(int i=1;i<n-2;++i){ mi=min(mi,p[n-i-1].second); mx=max(mx,p[n-i-1].second); // cout<<mx<<' '<<mi<<' '<<i+2<<endl; if(mx-mi+1==i+2)w++; if(mx-mi+1==i+1&&mi>0)w++; if(mx-mi+1==i+1&&mx<n-1)w++; if(mx-mi+1==i+1&&i%2==1&&mi>0&&mx<n-1)w++; } cout<<med<<' '<<w; 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> using namespace std; int t[1000009]; pair<int,int>p[1000009]; int main() { int n,m=0; int w=2; cin>>n; for(int i=0;i<n;++i){ cin>>t[i]; m=max(m,t[i]); p[i].first=t[i]; p[i].second=i; } int med=2*m+1; sort(p,p+n); int mi,mx; mi=p[n-1].second; mx=p[n-1].second; for(int i=1;i<n-2;++i){ mi=min(mi,p[n-i-1].second); mx=max(mx,p[n-i-1].second); // cout<<mx<<' '<<mi<<' '<<i+2<<endl; if(mx-mi+1==i+2)w++; if(mx-mi+1==i+1&&mi>0)w++; if(mx-mi+1==i+1&&mx<n-1)w++; if(mx-mi+1==i+1&&i%2==1&&mi>0&&mx<n-1)w++; } cout<<med<<' '<<w; return 0; } |