Codeforces Round #452 (Div. 2)

899a 
题意:给出一个序列,要么选出3个1的组合,要么选出一个2和一个1的组合,问最多能选出多少个组合

思路:贪心即可

#include<iostream>
#include<cstdio>
#include<cstring>

using namespace std;

int n, a[200010];
int x, y;

int main(){
    cin>>n;
    for(int i = 1; i<=n; i++){
        cin>>a[i];
        if(a[i] == 1) x++;
        if(a[i] == 2) y++;
    }
    if(x == y){
        cout<<x<<endl;
    }
    else if(x == 0){
        cout<<0<<endl;
    }
    else if(y == 0 && x<3){
        cout<<0<<endl;
    }
    else if(x>y){
        int sum = y;
        x-=y;
        sum+=x/3;
        cout<<sum<<endl;
    }
    else if(y>x){
        cout<<x<<endl;
    }


    return 0;
}

猜你喜欢

转载自blog.csdn.net/grimcake/article/details/80204056