baru003のブログ

baruの雑記兼備忘録

AOJ 0161

・問題リンク Sport Meet

・コメント
今回の問題文にはタイムの重複は無いと明示してあったので、そのままmapを使って実装しました。

・ソース

#include<iostream>
#include<map>
#include<string>
using namespace std;

int main()
{
    long n;
    while(cin>>n){
        if(n==0)break;
        map< long,string > list;
        for(long i=0;i<n;i++){
            string c;//teamNumber
            long a1,b1,a2,b2,a3,b3,a4,b4;
            //input
            cin>>c>>a1>>b1>>a2>>b2>>a3>>b3>>a4>>b4;
            long min=a1+a2+a3+a4;
            long time=b1+b2+b3+b4;
            //min->sec
            while(min>0){
                time+=60;
                min--;
            }
            //makeList
            list.insert( map< long,string >::value_type(time,c) );
        }
        long cnt=0;
        for(map< long,string >::iterator it=list.begin();it!=list.end();it++){
            if(cnt==0||cnt==1||(n-cnt)==2){
                cout<<(*it).second<<endl;
            }
            cnt++;
        }
    }
    return 0;
}