2 条题解
-
3
前后断开即可
#include<bits/stdc++.h> using namespace std; int i,n,f0,m,f[1000001],shu[1000001],oooo; int find(int l,int r,int a) { int p; while(r-l>1){ p=(r+l)/2; if(f[p]==a) return p; if(f[p]>a) r=p; else l=p; } return r; } int main(){ freopen("listwo.in","r",stdin); freopen("listwo.out","w",stdout); scanf("%d%d",&n,&m); for( i=1;i<=n;i++)cin>>shu[i]; for(i=1;i<m;i++) if(shu[i]<=shu[m]){ if(shu[i]>f[f0]){ f0++; f[f0]=shu[i]; } else f[find(0,f0,shu[i])]=shu[i]; } oooo=f0; f0=0; memset(f,0,sizeof(f)); for(i=m+1;i<=n;i++) if(shu[i]>=shu[m]){ if(shu[i]>f[f0]){ f0++; f[f0]=shu[i]; } else f[find(0,f0,shu[i])]=shu[i]; } printf("%d",f0+oooo+1); return 0; }
信息
- ID
- 472
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- 8
- 标签
- 递交数
- 126
- 已通过
- 19
- 上传者