这题当时..唉都是泪..今天写了一下,蛮简单的.没什么思维难度…
#include <iostream>
#include <set>
#include <vector>
#include <algorithm>
using namespace std;
#define debug(x) std::cerr << #x << " = " << (x) << std::endl
typedef long long LL;
const int MAXN = 1e5+17;
LL a[MAXN];
int main(int argc ,char const *argv[])
{
//#ifdef noob
freopen("Input.txt","r",stdin);freopen("Output.txt","w",stdout);
//#endif
LL n,k,mx=-1,mxp;
cin>>n>>k;
for (int i = 0; i < n; ++i)
{
cin>>a[i];
if(a[i]>mx)
mx=a[i],mxp=i;
}
vector<LL > l,r;
LL lm=0,rm=0;
for (int i = 0; i < n; ++i)
{
if(i<mxp)
l.push_back(a[i]),lm+=a[i];
}
r = l;
rm = lm;
for (int i = 0; i < n; ++i)
{
if(i>mxp)
r.push_back(a[i]),rm+=a[i];
}
bool can = false;
LL tms = 1,sm = 0,big = 0;
while(1)
{
if(tms==1)
{
if(k<(LL)l.size()) break;
sm+=l.size();
big+=(lm-l.size());
k-=(LL)l.size();
if(k<=big)
{
can = true;
break;
}
}
else
{
if(k<(LL)r.size()) break;
sm+=r.size();
big+=(rm-r.size());
k-=(LL)r.size();
if(k<=big)
{
can = true;
break;
}
}
tms++;
k-=mx;
}
if(can) cout<<"YES"<<endl;
else cout<<"KEK"<<endl;
return 0;
}