1 solutions
-
0
Guest MOD
-
1
没有数据QWQ
代码(lfy18赞助):
#include <bits/stdc++.h> using namespace std; typedef long long ll; const int N=1e7; int a[N],b[N],lef[N],rig[N],c[N]; int n,mid; int ma=-1; ll ans; int main(){ cin.sync_with_stdio(false); ios::sync_with_stdio(0); cin>>n; for(int i=0;i<n;i++){ cin>>a[i]; if(a[i]>ma){ ma=a[i]; mid=i; } } mid--; for(int j=1;j<=n;j++) b[j]=a[(mid+j)%n]; lef[1]=1; for(int i=2;i<=n;i++){ lef[i]=i-1; while(lef[i]>1&&b[lef[i]]<=b[i]) lef[i]=lef[lef[i]]; } for(int i=n;i>=1;i--){ rig[i]=i+1; while(rig[i]<=n&&b[rig[i]]<b[i]) rig[i]=rig[rig[i]]; if(rig[i]<=n&&b[rig[i]]==b[i]){ c[i]=c[rig[i]]+1; rig[i]=rig[rig[i]]; } } for(int i=2;i<=n;i++){ ans+=c[i]+2; if(lef[i]==1&&rig[i]==n+1) ans--; } cout<<ans; return 0; }
- 1
Information
- ID
- 273
- Time
- 1000ms
- Memory
- 256MiB
- Difficulty
- 10
- Tags
- # Submissions
- 9
- Accepted
- 0
- Uploaded By