记录编号 |
531277 |
评测结果 |
AAAAA |
题目名称 |
[Tyvj国庆欢乐赛] 山头狙击战 |
最终得分 |
100 |
用户昵称 |
wire |
是否通过 |
通过 |
代码语言 |
C++ |
运行时间 |
0.060 s |
提交时间 |
2019-05-10 19:35:12 |
内存使用 |
14.04 MiB |
显示代码纯文本
- #include<bits/stdc++.h>
- #define MAX 100000
- using namespace std;
- int d[MAX];
- int n,m1;
- bool tryy(int m)
- {
- int tmp=0;
- if(d[1]>m1)
- {
- tmp=d[1]-m1;
- }
- bool flag=true;
- int i=2;
- while(i<=n)
- {
- tmp=m+tmp;
- if(tmp>d[i])
- {
- flag=false;
- break;
- }
- if(d[i]-tmp>m1)
- {
- tmp=tmp-m;
- tmp+=d[i]-tmp-m1;
- }
- i++;
- }
- if(flag)
- {
- return 1;
- }
- return 0;
- }
- int main()
- {
- freopen("battle.in","r",stdin);
- freopen("battle.out","w",stdout);
- int A=0,B=INT_MAX,ans=0;
- cin>>n>>m1;
- for(int i=1;i<=n;i++)
- {
- cin>>d[i];
- }
- sort(d+1,d+1+n);
- for(int i=0;i<40;i++)
- {
- int m=(A+B)/2;
- if(tryy(m)) A=m+1,ans=m;
- else B=m-1;
- }
- cout<<ans;
- return 0;
- }
-