这个题目还是比较简单,每次选择自己能吃的分数最大的一个人,然后涨经验,最后和boss比一下谁的分数高。
郁闷的是用递归死活没过,改成循环才过了,无语。。。。。。
#include<iostream>
#include<cstdio>
#include<algorithm>
using namespace std;
long long n,m,k;
long long arr[10005];
int main()
{
int T;
cin>>T;
for(int t=1;t<=T;t++)
{
cin>>n>>m>>k;
for (int i=1;i<=n;i++)
scanf("%lld",&arr[i]);
sort(arr+1,arr+1+n);
if (arr[1]>m)
{
printf("Case #%d:\nmadan!\n",t);
continue;
}
if(arr[n]<=m)
{
printf("Case #%d:\nwhy am I so diao?\n",t);
continue;
}
for(int i=1;i<n;i++)
{
if(arr[i]<=m&&m<arr[i+1])
{
int ans=0;
for(int j=i+1;j<n;j++)
{
if(arr[j]<=m+k&&m+k<arr[j+1])
{
m=arr[j];
if(k>0) k--;
}
else if(arr[j]>m+k)
{
ans=0;
break;
}
}
if(m+k>=arr[n]) ans=1;//判断最终结果
if(!ans)
printf("Case #%d:\nmadan!\n",t);
else
printf("Case #%d:\nwhy am I so diao?\n",t);
break;
}
}
}
return 0;
}