PAT乙级1015德才论
首先呢这个题目我相信大家都已经了解了;关键是做题的过程中可能会超时;
我用了两种方法;这两种方法是一样的思路;只是输入输出的形式不一样;
我就是把这四种人放在4个不同的容器里;然后用快排分别对他们进行排序;如果使用其他的冒泡或者选择排序的话这样做也会超时的;如果使用C++的话,不关闭输入输出流,这个也会超时的;但是使用C语言的scanf和printf,这样就不会超时了;
这个题思路很明确:也没有涉及很复杂的算法
使用scanf和printf
使用C++的话的时间
#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;
}