题目1187:最小年龄的3个职工
时间限制:1 秒
内存限制:32 兆
特殊判题:否
提交:1409
解决:565
-
题目描述:
-
职工有职工号,姓名,年龄.输入n个职工的信息,找出3个年龄最小的职工打印出来。
-
输入:
-
输入第一行包括1个整数N,1<=N<=30,代表输入数据的个数。
接下来的N行有N个职工的信息:
包括职工号(整数), 姓名(字符串,长度不超过10), 年龄(1<=age<=100)。
-
输出:
-
可能有多组测试数据,对于每组数据,
输出结果行数为N和3的较小值,分别为年龄最小的职工的信息。关键字顺序:年龄>工号>姓名,从小到大。
-
样例输入:
-
5 501 Jack 6 102 Nathon 100 599 Lily 79 923 Lucy 15 814 Mickle 65
-
样例输出:
-
501 Jack 6 923 Lucy 15 814 Mickle 65
-
-
#include<iostream>
#include<algorithm>
#include<vector>
using
namespace
std;
typedef
struct
node
{
int
num;
string name;
int
age;
}P;
bool
cmp(P a,P b)
{
if
(a.age!=b.age)
return
a.age<b.age;
else
if
(a.num!=b.num)
return
a.num<b.num;
else
return
a.name<b.name;
}
int
main()
{
P p;
int
n,i;
vector<P> coll;
while
(cin>>n&&n)
{
for
(i=0;i<n;++i)
{
cin>>p.num>>p.name>>p.age;
coll.push_back(p);
}
sort(coll.begin(),coll.end(),cmp);
for
(i=0;i<3&&i<n;++i)
cout<<coll[i].num<<
' '
<<coll[i].name<<
' '
<<coll[i].age<<endl;
coll.clear();
}
return
0;
}
/**************************************************************
Problem: 1187
User: 3011216016
Language: C++
Result: Accepted
Time:20 ms
Memory:1528 kb
****************************************************************/