Codeforces 839B - Game of the Rows

839B - Game of the Rows

思路:先放4个的,然后再放2个的,最后再放1个的。

代码:

#include<bits/stdc++.h>
using namespace std;
#define ll long long
#define pb push_back
#define mem(a,b) memset((a),(b),sizeof(a))
int a[105];

int main()
{
    int n,k;
    cin>>n>>k;
    int c2=n*2; 
    int c4=n;
    for(int i=1;i<=k;i++)cin>>a[i];
    
    for(int i=1;i<=k;i++)
    {
        int c=min(c4,a[i]/4);
        c4-=c;
        a[i]-=c*4;
    }
    
    c2+=c4;//剩下的4个连在一起的也可以放2个的 
    for(int i=1;i<=k;i++)
    {
        int c=min(c2,a[i]/2);
        c2-=c;
        a[i]-=c*2;
    }
    
    int t=c2+c4;//原来的4个连在一起的放二个的时候只放了一半,而且放了一半也可能没放满 
    for(int i=1;i<=k;i++)
    {
        t-=a[i];
    }
    
    if(t<0)cout<<"NO"<<endl;
    else cout<<"YES"<<endl;
    return 0;
}

 

posted @ 2017-08-13 14:33  Wisdom+.+  阅读(247)  评论(0编辑  收藏  举报