PAT 甲级 1083 List Grades (25 分)

it2022-06-29  68

1083 List Grades (25 分)

Given a list of N student records with name, ID and grade. You are supposed 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 the following 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 no space, grade[i] is an integer in [0, 100], grade1 and grade2 are the boundaries of 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 the grades are in the given interval [grade1, grade2] and are in non-increasing order. 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<cstdio> #include<cstring> using namespace std; struct node{ string name,id; int grade,f; node(){ this->grade=-1; this->f=0; } }; node a[102]; void init() { for(int i=1;i<=100;i++) { a[i].grade=-1; a[i].f=0; } } int cmp(node a,node b) { return a.grade>b.grade; } int main() { int n,i,j,t,min_g,max_g,flag=0; string tn,tid; scanf("%d",&n); init(); for(i=0;i<n;i++) { cin>>tn>>tid>>t; a[t].name=tn; a[t].id=tid; a[t].f=1; } cin>>min_g>>max_g; for(i=max_g;i>=min_g;i--) { if(a[i].f) { flag=1; cout<<a[i].name<<" "<<a[i].id<<endl; } } if(!flag) cout<<"NONE"<<endl; return 0; }

 


最新回复(0)