题目
Given a list of N student records with name, ID and grade. You aresupposed to sort the records with respect to the grade in non-increasing order,and output those student records of which the grades are in a given interval.
Input Specification:
Each input file contains one test case. Each case is given in thefollowing format:
N
name[1] ID[1] grade[1]
name[2] ID[2] grade[2]
... ...
name[N] ID[N] grade[N]
grade1 grade2
where name[i] and ID[i] are strings of no more than 10 characters with nospace, grade[i] is an integer in [0, 100], grade1 and grade2 are the boundariesof the grade's interval. It is guaranteed that all the grades are distinct.
Output Specification:
For each test case you should output the student records of which thegrades are in the given interval [grade1, grade2] and are in non-increasingorder. Each student record occupies a line with the student's name and ID,separated by one space. If there is no student's grade in that interval, output"NONE" instead.
Sample Input 1:
4
Tom CS000001 59
Joe Math990112 89
Mike CS991301 100
Mary EE990830 95
60 100
Sample Output 1:
Mike CS991301
Mary EE990830
Joe Math990112
Sample Input 2:
2
Jean AA980920 60
Ann CS01 80
90 95
Sample Output 2:
NONE
直接模拟
代码:
#include <iostream>
#include <algorithm>
#include <string>
using namespace std;
struct student //学生结构
{
string name;
string id;
int grade;
};
bool cm(const student &s1,const student &s2); //排序
int main()
{
int n;
cin>>n;
student *stu=new student [n];
int i;
for(i=0;i<n;i++) //输入
cin>>stu[i].name>>stu[i].id>>stu[i].grade;
sort(stu,stu+n,cm); //排序
int grade1,grade2,flag=0; //分数段,是否有输出标志
cin>>grade1>>grade2;
for(i=0;i<n;i++)
{
if(stu[i].grade>=grade1&&stu[i].grade<=grade2)
{
cout<<stu[i].name<<" "<<stu[i].id<<endl;
flag=1;
}
}
if(flag==0)
cout<<"NONE";
delete [] stu;
return 0;
}
bool cm(const student &s1,const student &s2)
{
return s1.grade>s2.grade;
}