PAT 108_出队


题意:

好理解,给出学生信息,筛选符合成绩范围的学生,并用降序表示。


注意点:

主要在于要排序。这里我用一下优先队列。

priority_queue<student> q;

同时要在结构体中重载运算符

struct student
{
string name, id;
int grade;
bool operator < (student a) const
{

//当<号和<号对应时,先出队的是为成绩最大的,即大顶堆。
return grade < a.grade;
}
};


//628K  94MS
#include<cstdio>
#include<algorithm>
#include<cstring>
#include<iostream>
#include<stack>
#include<vector>
#include<queue>
#include<string>
using namespace std;
#define inf 0x3f3f3f3f
#define M 100000

struct student
{
string name, id;
int grade;
bool operator < (student a) const
{

//先出队的是为成绩最大的
return grade < a.grade;
}
};

student s[M];

int main(){
int n,maxg,ming;
cin>>n;

int i;
for(i = 0 ;i < n; i++)
{
cin>>s[i].name;
cin>>s[i].id;
cin>>s[i].grade;
}
scanf("%d%d",&ming, &maxg);

priority_queue<student> q;
for(i = 0; i < n; i++)
{
if(s[i].grade>=ming && s[i].grade <= maxg)
{
q.push(s[i]);
}
}

if(q.empty())
{
cout<<"NONE"<<endl;
return 0;
}

student stu;
while(!q.empty())
{
stu = q.top();
q.pop();
cout<<stu.name<<" "<<stu.id<<endl;
}

return 0;
}