比赛 防止浮躁的小练习v0.7 评测结果 AAAAAAAAAA
题目名称 拦截导弹 最终得分 100
用户昵称 Hzoi_Queuer 运行时间 0.009 s
代码语言 C++ 内存使用 0.24 MiB
提交时间 2016-10-27 14:38:29
显示代码纯文本
  1. #include<cstdio>
  2. #include<algorithm>
  3. #include<cstring>
  4. using namespace std;
  5. const int maxn=1010;
  6. int n,ans=0,c[maxn],a[maxn];
  7.  
  8. int Binary_search1(int x){
  9. int l=0,r=ans,mid;
  10. while(l<=r){
  11. mid=(l+r)>>1;
  12. if(c[mid]>=x)l=mid+1;
  13. else r=mid-1;
  14. }
  15. return l;
  16. }
  17.  
  18. int Binary_search2(int x){
  19. int l=0,r=ans,mid;
  20. while(l<=r){
  21. mid=(l+r)>>1;
  22. if(c[mid]<x)l=mid+1;
  23. else r=mid-1;
  24. }
  25. return l;
  26. }
  27.  
  28. int main()
  29. {
  30. freopen("missile.in","r",stdin);
  31. freopen("missile.out","w",stdout);
  32. while((scanf("%d",&a[++n]))!=EOF);n--;
  33. c[0]=0x7fffffff;
  34. for(int i=1;i<=n;i++){
  35. int tmp=Binary_search1(a[i]);
  36. if(c[tmp]<a[i])c[tmp]=a[i];
  37. if(tmp>ans)ans=tmp;
  38. }
  39. printf("%d\n",ans);
  40. memset(c,0x7f,sizeof c);
  41. c[0]=-1;ans=0;
  42. for(int i=1;i<=n;i++){
  43. int tmp=Binary_search2(a[i]);
  44. if(c[tmp]>a[i])c[tmp]=a[i];
  45. if(tmp>ans)ans=tmp;
  46. }
  47. printf("%d\n",ans);
  48. return 0;
  49. }