E - Cupcakes Gym - 101243E (贪心)

题目链接: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;
}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ZZ --瑞 hopeACMer

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值