#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; } |
English