Description
Write a program to identify the youngest person and the oldest person in a class.
Input
The number n in the first line determines the number of people in a class. The following n lines contain person’s name and his/her birthdate.
The information in each line is of this format:
personName dd mm yyyy
where personName is a single word less than 15 letters, dd mm yyyy are date, month and year of the birthdate.
Suppose that no one has the same name or the same birthdate.
Output
Print out 2 lines containing the name of youngest person and oldest person, respectively.
Sample Input
5
Mickey 1 10 1991
Alice 30 12 1990
Zipu 15 8 1993
Shanto 18 9 1990
Garfield 20 9 1990
Sample Output
Zipu
Shanto
题目很简单,就是排序,用sort函数就行,自己写一个控制排序的函数就行。
#include <cstdlib>
#include <iostream>
#include <algorithm>
using namespace std;
struct stt
{
char aa[20];
int day,mon,ye;
}node[300];
bool cmp(stt a,stt b) //控制排序顺序的函数
{
if(a.ye>b.ye)
return true;
if(a.ye < b.ye)
return false;
if(a.ye==b.ye)
{
if(a.mon > b.mon)
return true;
if(a.mon < b.mon)
return false;
if(a.mon==b.mon)
{
if(a.day > b.day)
return true;
if(a.day < b.day)
return false;
}
}
}
int main()
{
int n,i;
int j,k;
cin>>n;
i=0;
for(i=0;i<n;i++)
{
cin>>node[i].aa>>node[i].day>>node[i].mon>>node[i].ye;
}
sort(node,node+n,cmp);
cout<<node[0].aa<<endl;
cout<<node[n-1].aa<<endl;
return 0;
}