• 2018WFU校赛B题


    我们在ACM的题目中已经了解了什么是ACM了,ACM还是很残酷的了(ಥ _ ಥ),那么现在你就要解决一个ACM最简单的题了,简单到省赛和区域赛都不会出这种简单的题。ls很强,即使每年都在ACM这个大坑里,但是他依旧关心自己的排名。但是排名规则真的很令人烦恼,因为它是按平均分排的并且他们学习的科目数量是不一定的。所以你的任务就来了,ls的班里有n名同学,每个同学有3门课程,现在你要根据他们的成绩总和从大到小排名如果成绩相同则按他们名字的字典序(字典序当然就是字典的顺序啦)排名。


    Input

    第1行:一个数n,表示ls所在班里的学生的数量(2 <= N <= 100)第2 - N+1行,第一个数为第i个同学的课程的数量,接下来3个数对应3门课程的成绩(0<=m[i]<=100),接下来为一个字符串s表示第i个同学的名字(字符串的长度<=30且只是字母保证不会出现相同的名字)。


    Output

    输出他们排名后的结果。


    Sample Input 1
    3
    100 100 100 ls
    99 99 100 kt
    99 100 99 ksgggggggggggggg


    Sample Output 1
    ls 300
    ksgggggggggggggg 298
    kt 298

    #include<bits/stdc++.h>
    using namespace std;
    const int maxn = 100+5;
    struct Node{
    	int sum;
    	string s;
    }node[maxn];
    bool cmp(Node x, Node y)
    {
    	if(x.sum == y.sum)
    		return x.s < y.s;
    	else
    		return x.sum > y.sum;
    }
    int main()
    {
    	int n;
    	cin >> n;
    	for(int i = 0; i < n; i++) {
    		int a, b, c;
    		string ch; 
    		cin >> a >> b >> c >> ch;
    		node[i].sum = a + b + c;
    		node[i].s = ch;
    	}
    	sort(node, node+n, cmp);
    	for(int i = 0; i < n; i++)
    		cout << node[i].s << " " << node[i].sum << endl; 
    	return 0; 
    }
    

      

  • 相关阅读:
    3089:爬楼梯
    7592:求最大公约数问题
    JVM中内存回收深入分析,各种垃圾收集器
    PKU 1064 Cable master
    【面试&笔试】ASP.NET的相关问题
    1027. Colors in Mars (20) PAT
    DB_WRITER_PROCESSES与LOG_ARCHIVE_MAX_PROCESSES
    fedora下体验gentoo安装
    一个整数数组里面,除了两个数之外,其他的数字都出现了两次,写一个程序找出这两个数
    [置顶] export命令-linux
  • 原文地址:https://www.cnblogs.com/clb123/p/10145156.html
Copyright © 2020-2023  润新知