PAT 108
程序员文章站
2024-03-15 16:23:36
...
题意:
好理解,给出学生信息,筛选符合成绩范围的学生,并用降序表示。
注意点:
主要在于要排序。这里我用一下优先队列。
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;
}
上一篇: 5.6日华为笔试第三题解法