zoukankan      html  css  js  c++  java
  • PAT排序题---1015 德才论 (25分)

    1015 德才论 (25分)

    • 分四个等级的排序,想简化的朋友可以用结构体数组容器存储啦~
    #include<iostream>
    #include<vector>
    #include<ctype.h>
    #include<algorithm>
    #include<sstream>
    #include<string>
    #include<cstdio>
    
    using namespace std;
    
    /*此类考生按德才总分从高到低排序*/
    
    /*才分不到但德分到线的一类考生
    也按总分排序,但排在第一类考生之后*/
    
    /*德才分均低于H,但是德分不低于才分的考生,
    按总分排序,但排在第二类考生之后*/
    
    /*其他达到最低线 L 的考生也按总分排序,但排在第三类考生之后*/
    
    struct Node{
    	int num, grade1,grade2,sum;
    };
    
    int cnt=0;
    vector<Node> stu1;
    vector<Node> stu2;
    vector<Node> stu3;
    vector<Node> stu4;
    
    bool cmp(Node a,Node b){
    	if(a.sum!=b.sum){
    		return a.sum>b.sum;
    	}else if(a.grade1!=b.grade1){
    		return a.grade1>b.grade1;
    	}else{
    		return a.num<b.num;
    	}
    }
    int main() {
    	std::ios::sync_with_stdio(false);
    	std::cin.tie(0);
    	std::cout.tie(0);
    	int n,L,H; cin>>n>>L>>H;
    	for(int i=1;i<=n;i++){
    		int num,grade1,grade2;
    		cin>>num>>grade1>>grade2;
    		if(grade1>=L&&grade2>=L){
    			cnt++;int sum=grade1+grade2;
    			if(grade1>=H&&grade2>=H){
    				stu1.push_back({num,grade1,grade2,sum});
    				continue;
    			}
    			if(grade1>=H&&grade2<H){
    				stu2.push_back({num,grade1,grade2,sum});
    				continue;
    			}
    			if(grade1<H&&grade2<H&&grade1>=grade2){
    				stu3.push_back({num,grade1,grade2,sum});
    				continue;
    			}
    			stu4.push_back({num,grade1,grade2,sum});
    		}
    	}
    	sort(stu1.begin(),stu1.end(),cmp);
    	sort(stu2.begin(),stu2.end(),cmp);
    	sort(stu3.begin(),stu3.end(),cmp);
    	sort(stu4.begin(),stu4.end(),cmp);
    	cout<<cnt<<"
    ";
    	for(int i=0;i<stu1.size();i++){
    		cout<<stu1[i].num<<" "<<stu1[i].grade1<<" "<<stu1[i].grade2<<"
    ";
    	}
    	for(int i=0;i<stu2.size();i++){
    		cout<<stu2[i].num<<" "<<stu2[i].grade1<<" "<<stu2[i].grade2<<"
    ";
    	}
    	for(int i=0;i<stu3.size();i++){
    		cout<<stu3[i].num<<" "<<stu3[i].grade1<<" "<<stu3[i].grade2<<"
    ";
    	}
    	for(int i=0;i<stu4.size();i++){
    		cout<<stu4[i].num<<" "<<stu4[i].grade1<<" "<<stu4[i].grade2<<"
    ";
    	}
    	return 0;
    }
    
    
  • 相关阅读:
    JDK里面包含jre,为什么还要下载一个jre呢?
    2021年11月2日,面试经历
    linux内核学习心得
    关于QQ短信接口的使用。
    软件测试--开发者测试例子
    此博客相关声明·AP2017060911I
    21RNC201906034I·代码重构
    20RNC201901313I·代码重构
    19RND201808172·层次设定
    18RND201801311·图像方案日记
  • 原文地址:https://www.cnblogs.com/bingers/p/13088298.html
Copyright © 2011-2022 走看看