当前位置: 代码迷 >> 综合 >> PAT 1015 德才论 (25分)
  详细解决方案

PAT 1015 德才论 (25分)

热度:18   发布时间:2023-12-12 11:02:26.0

原题链接
总结:
该题是分类排序,可以利用sort()的第三个参数,进行排序
本题学会了vector 的使用

#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
struct node
{
    long long id;int de,cai;
};
int cmp(struct node a,struct node b)
{
    if((a.de+a.cai)!=(b.de+b.cai)){
    return (a.de+a.cai)>(b.de+b.cai);}else if(a.de != b.de){
    return a.de>b.de;}else{
    return a.id<b.id;}
}
int main()
{
    int N,L,H;cin>>N>>L>>H;vector<node> v[4];struct node tem;int total = N;for(int i=0;i<N;i++){
    cin>>tem.id>>tem.de>>tem.cai;if(tem.de>=L&&tem.cai>=L)//错误处,L为输入的数,而不是一成不变的60{
    if(tem.de>=H&&tem.cai>=H){
    v[0].push_back(tem);}else if(tem.de>=H&&tem.cai<H){
    v[1].push_back(tem);}else if(tem.de<H&&tem.cai<H&&tem.de>=tem.cai){
    v[2].push_back(tem);}else{
    v[3].push_back(tem);}}elsetotal--;}cout<<total<<"\n";for(int i=0;i<4;i++){
    sort(v[i].begin(),v[i].end(),cmp);for(int j=0;j<v[i].size();j++){
    cout<<v[i][j].id<<" "<<v[i][j].de<<" "<<v[i][j].cai<<"\n";}}return 0;
}