记录编号 531277 评测结果 AAAAA
题目名称 [Tyvj国庆欢乐赛] 山头狙击战 最终得分 100
用户昵称 Gravatarwire 是否通过 通过
代码语言 C++ 运行时间 0.060 s
提交时间 2019-05-10 19:35:12 内存使用 14.04 MiB
显示代码纯文本
  1. #include<bits/stdc++.h>
  2. #define MAX 100000
  3. using namespace std;
  4. int d[MAX];
  5. int n,m1;
  6. bool tryy(int m)
  7. {
  8. int tmp=0;
  9. if(d[1]>m1)
  10. {
  11. tmp=d[1]-m1;
  12. }
  13. bool flag=true;
  14. int i=2;
  15. while(i<=n)
  16. {
  17. tmp=m+tmp;
  18. if(tmp>d[i])
  19. {
  20. flag=false;
  21. break;
  22. }
  23. if(d[i]-tmp>m1)
  24. {
  25. tmp=tmp-m;
  26. tmp+=d[i]-tmp-m1;
  27. }
  28. i++;
  29. }
  30. if(flag)
  31. {
  32. return 1;
  33. }
  34. return 0;
  35. }
  36. int main()
  37. {
  38. freopen("battle.in","r",stdin);
  39. freopen("battle.out","w",stdout);
  40. int A=0,B=INT_MAX,ans=0;
  41. cin>>n>>m1;
  42. for(int i=1;i<=n;i++)
  43. {
  44. cin>>d[i];
  45. }
  46. sort(d+1,d+1+n);
  47. for(int i=0;i<40;i++)
  48. {
  49. int m=(A+B)/2;
  50. if(tryy(m)) A=m+1,ans=m;
  51. else B=m-1;
  52. }
  53. cout<<ans;
  54. return 0;
  55. }
  56.