P1093 [NOIP2007 普及组] 奖学金(模拟排序)

简介: P1093 [NOIP2007 普及组] 奖学金(模拟排序)

Description of the topic



A primary school recently received a grant to offer scholarships to top five students with outstanding academic performance. At the end of the term, each student has three subjects: Chinese, Maths, and English. First according to the total score from high to low sort, if the total score of two students is the same, and then according to the language score from high to low sort, if the total score of two students and language scores are the same, then the provisions of the small number of students in front, so that each student's ranking is the only certainty.


Task: The total score is calculated based on the results of the 3 courses entered, then sorted by the above rules, and finally output the top five students' school numbers and total scores in the ranking order. Note that in the top 5 students, each person's scholarship is different, so you must strictly follow the above rules. For example, in a correct answer, if the output data for the first two rows (two numbers per row: school number, total score) is:


77 279279

55 279279


The meaning of these two rows of data is: the two students with the highest total score are 77th and 55th in turn. The total scores of the two students were 279279 (the total score was equal to the sum of the three subjects of input, mathematics and English), but the students with the number 77 had higher scores in Chinese. If your top two output data is:


55 279279

77 279279


Error handling by output, no score can be scored.


Enter the format



A total of n1 lines.


The 11th behavior is a positive integer n (sle 300)n (≤300), indicating the number of students participating in the selection.


On lines 22 to n1n1, each row has 33 numbers separated by spaces, each between 00 and 100100. The 33 numbers in line jj indicate, in turn, the scores of students with the number j-1j-1 in Chinese, math, and English. Each student's number is numbered 1 to n1 n in the order in which they are entered (exactly the line number minus 11 of the input data).


The data given are correct and need not be tested.


Thanks to Huang Xiao U Drinks for correcting the input format


The output format



There are 5 rows, each of which is a positive integer separated by spaces, representing the number and total score of the first 55 students in turn.


A sample of the input and output



Enter #1 copy


1. 6
2. 90 67 80
3. 87 66 91
4. 78 89 91
5. 88 99 77
6. 67 89 64
7. 78 89 98


Output #1 copy

1. 6 265
2. 4 264
3. 3 258
4. 2 244
5. 1 237
6.


Enter #2 copy

1. 8
2. 80 89 89
3. 88 98 78
4. 90 67 80
5. 87 66 91
6. 78 89 91
7. 88 99 77
8. 67 89 64
9. 78 89 98


Output #2 copy

1. 8 265
2. 2 264
3. 6 264
4. 1 258
5. 5 258


题意分析就是模拟排序判断;

#include<bits/stdc++.h>
const int maxn=1e6+7;
using namespace std;
struct node
{
  int sum;
  int x,y,z;
  int num;
}s[maxn];
bool cmp(node a,node b)
{
  if(a.sum>b.sum)return 1;
  else if(a.sum<b.sum)return 0;
  else
  {
    if(a.x>b.x)return 1;
    else if(a.x<b.x) return 0;
    else
    {
      if(a.num<b.num)return 1;
      else return 0; 
    }
  }
}
int main()
{
  int t;
  cin>>t;
  for(int i=1;i<=t;i++)
  {
    s[i].num=i;
    cin>>s[i].x>>s[i].y>>s[i].z;
    s[i].sum=s[i].x+s[i].y+s[i].z;
  }
  sort(s+1,s+1+t,cmp);
  for(int i=1;i<=5;i++)
  {
    cout<<s[i].num<<' '<<s[i].sum<<endl; 
  }
}
相关文章
|
8月前
P1308 [NOIP2011 普及组] 统计单词数(模拟加函数+数学分析)
P1308 [NOIP2011 普及组] 统计单词数(模拟加函数+数学分析)
40 0
|
12月前
|
算法
2018 蓝桥杯省赛 B 组模拟赛(一)
2018 蓝桥杯省赛 B 组模拟赛(一)
|
关系型数据库 MySQL 数据库
|
程序员
贤鱼的刷题日常--P1022 [NOIP2000 普及组] 计算器的改良--题目详解
🍀学习了解P1022 [NOIP2000 普及组] 计算器的改良
254 0
贤鱼的刷题日常--P1022 [NOIP2000 普及组] 计算器的改良--题目详解
|
算法
每日一题冲刺大厂第十六天 NOIP普及组 三国游戏
大家好,我是泡泡,给大家带来每日一题的目的是为了更好的练习算法,我们的每日一题为了让大家练到各种各样的题目,熟悉各种题型,一年以后,蜕变成为一个不一样的自己!
96 0
每日一题冲刺大厂第十六天 NOIP普及组 三国游戏
P1077 [NOIP2012 普及组] 摆花
P1077 [NOIP2012 普及组] 摆花
94 0
P1077 [NOIP2012 普及组] 摆花
|
算法 C++
算法竞赛题解:[NOIP2017 普及组] 成绩
算法竞赛题解:[NOIP2017 普及组] 成绩
299 0
|
算法
算法竞赛题解:[NOIP2015 普及组] 金币
算法竞赛题解:[NOIP2015 普及组] 金币
536 0
|
机器学习/深度学习 C语言 C++
2019年第十届C/C++ B组蓝桥杯省赛真题(特别数的和)
题目描述 小明对数位中含有 2、0、1、9 的数字很感兴趣(不包括前导 0),在 1 到 40 中这样的数包括 1、2、9、10 至 32、39 和 40,共 28 个,他们的和是 574。 请问,在 1 到 nn 中,所有这样的数的和是多少?
329 0