zl程序教程

您现在的位置是:首页 >  其他

当前栏目

1062 Talent and Virtue (25 分)【难度: 简单 / 知识点: 排序】

知识点排序 简单 and 25 难度
2023-09-11 14:15:52 时间

在这里插入图片描述
https://pintia.cn/problem-sets/994805342720868352/problems/994805410555346944

#include<bits/stdc++.h>
using namespace std;
struct node {string id;int a,b;}temp;
vector<node>A,B,C,D;
int n,L,H;
bool cmp(node a,node b)
{
    if(a.a+a.b==b.a+b.b)
    {
        if(a.a==b.a) return a.id<b.id;
        return a.a>b.a;
    }
    return a.a+a.b>b.a+b.b;
}
void f(vector<node> &A){sort(A.begin(),A.end(),cmp);}
void print(vector<node> A) {for(int i=0;i<A.size();i++) printf("%s %d %d\n",A[i].id.c_str(),A[i].a,A[i].b);}
int main(void)
{
    cin>>n>>L>>H;
    for(int i=0;i<n;i++)
    {
        cin>>temp.id>>temp.a>>temp.b;
        if(temp.a<L||temp.b<L) continue;
        if(temp.a>=H&&temp.b>=H) A.push_back(temp);
        else if(temp.a>=H&&temp.b>=L) B.push_back(temp);
        else if(temp.a<H&&temp.b<H&&temp.a>=temp.b) C.push_back(temp);
        else D.push_back(temp);
    }
    cout<<A.size()+B.size()+C.size()+D.size()<<endl;
    f(A),f(B),f(C),f(D);
    print(A),print(B),print(C),print(D);
    return 0;
}