NBA总冠军

· · 个人记录

题目描述

又要考试了, LJW 决定放松一下,就打开电视,看见了篮球赛,他立即想到了每年的 NBA总冠军队伍。由于复习紧张,他只记起了一部分,记忆的内容可能有重复。 现在请求学过编程的你帮助 LJW,按时间顺序依次输出总冠军的球队(不能重复)。

( NBA 从 1947A.D 到 2009A.D)

输入

输入文件第一行是一个正整数 n(0<n<50)。

接下来的 n 行,每行先是城市名(由大小写字母、空格组成),后是时间(由数字组成)。二者之间用 1 个空格隔开。

输出

输出文件共若干行,即排序后的 NBA 总冠军队伍。每行先是时间,后是城市名,中间用一个空格隔开。

弄个结构体按照年份排序即可。需要注意的是球队名字里可能有空格。

代码如下

#include <algorithm>
#include <iostream>
#include <cstring>
#include <cstdio>
using namespace std;

struct NBA{
    string name;
    int year;
}a[51];

int n;

bool cmp(NBA x,NBA y){
    return x.year<y.year;
}

int main(void){
    scanf("%d\n",&n);
    for(int i=1;i<=n;++i){
        getline(cin,a[i].name);
        int x=0;
        for(int j=0;j<a[i].name.length();++j)
            if((a[i].name[j]>='0')&&(a[i].name[j]<='9'))x=x*10+a[i].name[j]-'0';
        a[i].year=x;
        a[i].name.erase(a[i].name.size()-5,5);
    }
    sort(a+1,a+n+1,cmp);
    for(int i=1;i<=n;++i)
        if(a[i].year!=a[i-1].year)
            cout<<a[i].year<<" "<<a[i].name<<endl;
}