AC代码(思维题:只要K在某一个区间里面就可以实现让吃货打扫卫生这个区间最小是最大值之前每个人都吃一个
最大值是在最大值之前的每一个人都吃自己能吃的最多的然后这个区间可以不断增加区间左端每次都加出了吃货每个人都吃1
右区间每次增加所有人都吃最多的)
Select Code
#include <bits/stdc++.h>
using namespace std;
int main()
{
freopen("INPUT.TXT", "r", stdin);
freopen("OUTPUT.TXT", "w", stdout);
int i;
long long a[100000+10], n, k, maxi = 0, maxii, sm = 0, sm1 = 0, l, r, flag;
while(cin>>n>>k)
{
maxi = 0, sm = 0, sm1 = 0,r = 0;
for(i = 1; i<=n; i++)
{
cin>>a[i];
if(a[i]>maxi)
{
maxi = a[i];
maxii = i;
}
sm+=a[i];
}
sm1 = maxi+(n-1);
l = maxii-1;
for(i = 1; i<maxii; i++)
{
r+=a[i];
}
while(1)
{
flag = 0;
if(k>=l&&k<=r)
{
flag = 1;
break;
}
else if(k<l)
{
break;
}
l+=sm1;
r+=sm;
}
if(flag)
printf("YES\n");
else
printf("KEK\n");
}
return 0;
}