记录编号 |
349899 |
评测结果 |
AAAAAAAAAA |
题目名称 |
[NOIP 2015]跳石头 |
最终得分 |
100 |
用户昵称 |
Ays |
是否通过 |
通过 |
代码语言 |
C++ |
运行时间 |
0.039 s |
提交时间 |
2016-11-15 12:51:46 |
内存使用 |
0.62 MiB |
显示代码纯文本
#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
long long a[50005]={0};
//5000
long long er(int c,int n){
long long retur=0,jilu=0;
int q=0;
for(int i=0;i<=n;i++){
if(a[i]-jilu<c){
retur++;
q=1;
// printf("jilu%lld ",jilu);
}
else jilu=a[i];
if(q==1){
//jilu=jilu-a[i];
q=0;
}
}
// printf("re%lld ",retur);
return retur;
}
int main(){
freopen("2015stone.in","r",stdin);
freopen("2015stone.out","w",stdout);
long long l,n,m;
scanf("%lld%lld%lld",&l,&n,&m);
for(int i=0;i<n;i++){
long long di;
scanf("%lld",&di);
a[i]=di;
}
a[n]=l;
long long first=0,last=l;
long long ans=0;
while(first<=last){
long long c=(last-first)/2+first;
// printf("c%lld ",c);
if(er(c,n)>m){
last=c-1;
// printf("last%lld ",last);
}
else{//printf("er%lld ",er(c,n));
ans=c;
first=c+1;
// printf("first%lld ",first);
}
}
printf("%lld",ans);
return 0;
}
/*473552198 10 9
52952603 64207816 118368034 139315940 161298883 184195626 279451016 327682457 367473323 441630616*/