欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

PAT 108

程序员文章站 2024-03-15 16:23:36
...

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;
}