您的位置:首页 > 其它

1146 -- 结义兄弟

2015-08-31 16:58 183 查看
结义兄弟
Time Limit:1000MS Memory Limit:65536K

Total Submit:102 Accepted:84
Description
古人结义,年长为兄,年幼为弟。某日我校某班同学打算结义气兄弟,但他们遇到了一个难题:谁为兄,谁为弟呢?

Input
输入第一行有一个整数N(0< N < 1000)表示N个同学。

接下来有N行,且每行都有一个字符串(全为小写字母且长度小于30)和3个整数 ,分别表示姓名、年、月、日。

所有同学的年龄均为1900年以后的。

Output
请按从兄到弟的顺序输出所有同学的姓名。

假设不存在同年同月同日生的同学。

Sample Input
4
zhangsan 2000 7 8
lisi 2000 5 2
wanger 2001 5 1
mazi 2000 5 1

Sample Output
mazi
lisi
zhangsan
wanger

Hint
ahstu@icpc2014

Source
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace AK1146 {
class Program {
struct People {
public string name;
public int year , month , day;
}
public class MyComparer : IComparer<People> {
int IComparer<People>.Compare(People a , People b) {
if (a.year == b.year) {
if (a.month == b.month)
return a.day < b.day ? -1 : 1;
return a.month < b.month ? -1 : 1;
}
return a.year < b.year ? -1 : 1;
}
}
static void Main(string[] args) {
int n = int.Parse(Console.ReadLine());
People[] p = new People[n + 5];
for (int i = 0 ; i < n ; i++) {
string[] s = Console.ReadLine().Split();
p[i].name = s[0];
p[i].year = int.Parse(s[1]);
p[i].month = int.Parse(s[2]);
p[i].day = int.Parse(s[3]);
}
Array.Sort(p , 0 , n , new MyComparer());
for (int i = 0 ; i < n ; i++)
Console.WriteLine(p[i].name);
//Console.ReadLine();
}
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: