记录编号 |
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;
}