题目链接:https://vj.ti12z.cn/415c275cb0a15fcb4ede21b8cb5297de?v=1565418441
代码:
//Full of love and hope for life
#include <iostream>
#include <algorithm>
#include <stdio.h>
#include <string.h>
#include <math.h>
#include <queue>
#include <vector>
#include <bits/stdc++.h>
#define inf 0x3f3f3f3f
//https://paste.ubuntu.com/
//https://www.cnblogs.com/zzrturist/ //博客园
//https://blog.csdn.net/qq_44134712 //csdn
using namespace std;
const int maxn=1e5+10;
typedef long long ll;
const int mod=1e9+7;
ll a[100005];
int main()
{
freopen("input.txt", "r", stdin);
freopen("output.txt", "w", stdout);
ll i,n,m;
ll maxDate=0,maxId=0;
ll presum=0,lastsum=0;
ll preid=0,lastid=0;
ll yu = 0;
cin >> n >> m;
for ( i=0; i<n; i++ ) {
cin >> a[i];
if ( a[i]>maxDate ) {
maxDate = a[i];
maxId = i;
}
}
for ( i=0; i<maxId; i++ ) {
presum += a[i];
preid ++;
}
for ( i=maxId+1; i<n; i++ ) {
lastsum += a[i];
lastid ++;
}
if ( m>=preid&&m<=presum ) {
cout << "YES" << endl;
}
else {
m -= ( preid+maxDate );
yu += presum-preid;
ll all = maxDate+n-1;
ll allyu = presum+lastsum-(n-1);
ll isp = 0;
while ( m>0 ) {
if ( m<lastid+preid ) {
isp = 0;
break ;
}
if ( lastsum+presum+yu>=m ) {
isp = 1;
break ;
}
m -= all;
yu += allyu;
}
if ( isp==1 ) {
cout << "YES" << endl;
}
else {
cout << "KEK" << endl;
}
}
return 0;
}