CF140C New Year Snowmen

题目链接

这道题其实吧,水,我们教练说过,不要看标签,这只是CSP第一题的题目

思路嘛,priority_queue和贪心,就这样,很水
这是代码

还有,一定要在cf上交,不然……可以看一下提交记录,有几个人的代码回来了

Code

#include 
#include 
#include 
using namespace std;
const int MAXN = 1e6 + 5;
 
inline int read(){
    int k = 0,f = 1;
    char ch = getchar();
    while(ch < '0' || ch > '9'){
        if (ch == '-'){
            f = -1;
        }
        ch = getchar();
    }
    while(ch >= '0' && ch <= '9'){
        k = k * 10 + ch - '0';
        ch = getchar();
    }
    return k * f;
}
 
inline void write(int x){
    if (x < 0){
        putchar('-');
        x = -x;
    }
    if (x > 9) write(x / 10);
    putchar(x % 10 + '0');
}
 
struct node{
    int cnt,num,id;
    node(){}
    node(int Cnt,int Num){
        cnt = Cnt,num = Num;
    }
    bool operator <(const node& a) const{
        return cnt < a.cnt;
    }
}a[MAXN];
 
priority_queue  q;
int cnt = 1;
int ans;
 
struct ball{
    int big,mid,sma;
}k[MAXN];
 
bool cmp(node x,node y){
    return x.num < y.num; 
}
 
int main(){
    
    int n;
    n = read();
    
    for (int i = 1; i <= n ; i++) a[i].num = read();
    
    sort(a + 1,a + 1 + n,cmp);
    
    for (int i = 1; i <= n; i++){
        if (a[i].num != a[i + 1].num){
            q.push(node(cnt,a[i].num));
            cnt = 1;
        } 
        else cnt++;
    }
 
    if (q.size() < 3){
        printf("0");
        return 0;
    }
    
    while(q.size() >= 2){
        node x = q.top();q.pop();
        node y = q.top();q.pop();
        node z = q.top();q.pop();
        x.cnt--,y.cnt--,z.cnt--;
        k[++ans].big = x.num;
        k[ans].mid = y.num;
        k[ans].sma = z.num;
        if (x.cnt)  q.push(node(x.cnt,x.num));
        if (y.cnt)  q.push(node(y.cnt,y.num));
        if (z.cnt)  q.push(node(z.cnt,z.num));
    }
    
    write(ans);
    putchar(10);
    
    for (int i = 1 ; i <= ans ; i++){
        int m[5];
        m[1] = k[i].big;
        m[2] = k[i].mid;
        m[3] = k[i].sma;
        sort(m + 1,m + 4);
        printf("%d %d %d\n",m[3],m[2],m[1]);
    }
    return 0;
}

你可能感兴趣的:(CF140C New Year Snowmen)