PAT乙级1015德才论

首先呢这个题目我相信大家都已经了解了;关键是做题的过程中可能会超时;

我用了两种方法;这两种方法是一样的思路;只是输入输出的形式不一样;

我就是把这四种人放在4个不同的容器里;然后用快排分别对他们进行排序;如果使用其他的冒泡或者选择排序的话这样做也会超时的;如果使用C++的话,不关闭输入输出流,这个也会超时的;但是使用C语言的scanf和printf,这样就不会超时了;

这个题思路很明确:也没有涉及很复杂的算法

使用scanf和printf

PAT乙级1015德才论

使用C++的话的时间

PAT乙级1015德才论

#include <bits/stdc++.h>
using namespace std;
#define ll long long
ll h;
struct Student
{
	ll id;
	ll de;
	ll cai;
	ll sum;
};
bool com(Student s1,Student s2)
{
	if(s1.sum==s2.sum)
	{
		if(s1.de==s2.de)
		{
			return s1.id<s2.id;
		}
		return s1.de>s2.de;
	}
	return s1.sum>s2.sum;
}
int main()
{
	int n,l;
	ios::sync_with_stdio(false);
	cin>>n>>l>>h;
	vector<Student>v1;
	vector<Student>v2;
	vector<Student>v3;
	vector<Student>v4;
	Student s;
	for(int i=0;i<n;i++)
	{
		cin>>s.id>>s.de>>s.cai;
		s.sum=s.de+s.cai;
		if(s.de>=l&&s.cai>=l)
		{
			if(s.de>=h&&s.cai>=h)
			{
				v1.push_back(s);
			}
			else if(s.de>=h&&s.cai<h)
			{
				v2.push_back(s);
			}
			else if(s.cai<h&&s.de<h&&s.de>=s.cai)
			{
				v3.push_back(s);
			}
			else
			{
				v4.push_back(s);
			}
		}
	}
	sort(v1.begin(),v1.end(),com);
	sort(v2.begin(),v2.end(),com);
	sort(v3.begin(),v3.end(),com);
	sort(v4.begin(),v4.end(),com);
	cout<<v1.size()+v2.size()+v3.size()+v4.size()<<endl;
	for(auto &a:v1)
	{
		cout<<a.id<<" "<<a.de<<" "<<a.cai<<endl;
	}
	for(auto &a:v2)
	{
		cout<<a.id<<" "<<a.de<<" "<<a.cai<<endl;
	}
	for(auto &a:v3)
	{
		cout<<a.id<<" "<<a.de<<" "<<a.cai<<endl;
	}
	for(auto &a:v4)
	{
		cout<<a.id<<" "<<a.de<<" "<<a.cai<<endl;
	}
	return 0;
}
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
#define ll long long
int h;
struct Student
{
	int id;
	int de;
	int cai;
	int sum;
};
bool com(Student s1,Student s2)
{
	if(s1.sum==s2.sum)
	{
		if(s1.de==s2.de)
		{
			return s1.id<s2.id;
		}
		return s1.de>s2.de;
	}
	return s1.sum>s2.sum;
}
int main()
{
	int n,l;
	scanf("%d%d%d",&n,&l,&h);
	vector<Student>v1;
	vector<Student>v2;
	vector<Student>v3;
	vector<Student>v4;
	Student s;
	for(int i=0;i<n;i++)
	{
		scanf("%d%d%d",&s.id,&s.de,&s.cai);
		s.sum=s.de+s.cai;
		if(s.de>=l&&s.cai>=l)
		{
			if(s.de>=h&&s.cai>=h)
			{
				v1.push_back(s);
			}
			else if(s.de>=h&&s.cai<h)
			{
				v2.push_back(s);
			}
			else if(s.cai<h&&s.de<h&&s.de>=s.cai)
			{
				v3.push_back(s);
			}
			else
			{
				v4.push_back(s);
			}
		}
	}
	sort(v1.begin(),v1.end(),com);
	sort(v2.begin(),v2.end(),com);
	sort(v3.begin(),v3.end(),com);
	sort(v4.begin(),v4.end(),com);
	cout<<v1.size()+v2.size()+v3.size()+v4.size()<<endl;
	for(auto &a:v1)
	{
	printf("%08d %d %d\n",a.id,a.de,a.cai);
	}
	for(auto &a:v2)
	{
	printf("%08d %d %d\n",a.id,a.de,a.cai);
	}
	for(auto &a:v3)
	{
		printf("%08d %d %d\n",a.id,a.de,a.cai);
	}
	for(auto &a:v4)
	{
		printf("%08d %d %d\n",a.id,a.de,a.cai);
	}
	return 0;
}