贪心 尽量使最后的值大
#include <iostream>
#include<stdio.h>
#include<string.h>
#include<vector>
#include<algorithm>
#include<cmath>
using namespace std;
const int N=10005;
int T,n,m,k;
int cas=1;
long long a[N];
int main()
{
#ifndef ONLINE_JUDGE
freopen("aaa","r",stdin);
#endif
scanf("%d",&T);
while(T--){
scanf("%d%d%d",&n,&m,&k);
for(int i=0;i<n;i++) scanf("%I64d",&a[i]);
sort(a,a+n);
printf("Case #%d:\n",cas++);
if(m<a[0]) {
puts("madan!");
continue;
}else
if(m>=a[n-1]){
puts("why am I so diao?");
continue;
}
int pos=upper_bound(a,a+n,m)-a-1;
bool ok=false;
for(int i=pos;i<n;){
if(i==n-1) {
ok=true;
break;
}
long long tmp=a[i]+k;
if(tmp<a[i+1]){
break;
}
i=upper_bound(a,a+n,tmp)-a-1; /* 每次找一个小于等于tmp的值 */
if(k>0) k--;
}
if(ok) puts("why am I so diao?");
else puts("madan!");
}
return 0;
}
hdu5246 贪心
最新推荐文章于 2017-07-07 09:01:26 发布