1 条题解
-
0
#include<bits/stdc++.h> using namespace std; int n,pos,a[100050],ps[100050],p=1; int ans; int main() { cin>>n>>pos; for(int i=1;i<=n;i++) scanf("%d",&a[i]); ps[1]=a[1]; for(int i=2;i<pos;i++) { if(a[i]>=ps[p])ps[++p]=a[i]; else{ int l=1,r=p,mid=p>>1; while(l!=r) { if(ps[mid]<=a[i])l=mid+1; else r=mid; mid=(l+r)>>1; } ps[l]=a[i]; } } if(ps[p]<=a[pos]) { p++; } else{ a[pos]=1e9+1; } ans=pos-p; ps[1]=a[pos]; p=1; for(int i=pos+1;i<=n;i++) { if(a[i]<=ps[p])ps[++p]=a[i]; else{ int l=1,r=p,mid=p>>1; while(l!=r) { if(ps[mid]>=a[i])l=mid+1; else r=mid; mid=(l+r)>>1; } ps[l]=a[i]; } } ans+=(n-pos+1)-p; cout<<ans; }
- 1
信息
- ID
- 784
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- 8
- 标签
- (无)
- 递交数
- 103
- 已通过
- 18
- 上传者