baru003のブログ

baruの雑記兼備忘録

AOJ 0218

・問題リンク Dividing Students

・コメント
今回もそのまま実装して終わりました。

・ソース

#include<iostream>
using namespace std;

int main()
{
    int n;
    while(true){
        cin>>n;
        if(n==0)break;
        long m[n+1],e[n+1],j[n+1];
        for(int i=0;i<n;i++){
            cin>>m[i]>>e[i]>>j[i];
        }
        for(int i=0;i<n;i++){
            if(m[i]==100||e[i]==100||j[i]==100){
                cout<<'A'<<endl;
                continue;
            }else if((m[i]+e[i])/2>=90){
                cout<<'A'<<endl;
                continue;
            }else if((m[i]+e[i]+j[i])/3>=80){
                cout<<'A'<<endl;
                continue;
            }else if((m[i]+e[i]+j[i])/3>=70){
                cout<<'B'<<endl;
                continue;
            }else if(((m[i]+e[i]+j[i])/3>=50)&&(m[i]>=80||e[i]>=80)){
                cout<<'B'<<endl;
                continue;
            }else{
                cout<<'C'<<endl;
                continue;
            }
        }
    }
    return 0;
}

AOJ 0138

問題リンク Track and Field Competition

・コメント
とてつもなく無駄なことをしています。
まず、printfを使えばよかったものを選手番号を始めにstring型で扱おうとしてしまった為に出力を分けて書くというとても汚い書き方になってしまいました。
書きなおすことも出来るのですがめんどくさかったし最初のやり方でやりたかったのでこんなことに・・(笑)
次気力があったら書き直したいですw

・ソース

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

int main()
{
    map< double,string >list1,list2,list3,lista;
    string an[9];
    double at[9];
    double time;
    string num;
    int j=0;
    //first
    for(int i=1;i<=8;i++){
        cin>>num>>time;
        list1.insert( map< double,string >::value_type(time,num) );
    }
    map< double,string >::iterator it=list1.begin();
    an[j]=(*it).second;
    at[j]=(*it).first;
    j++;it++;
    an[j]=(*it).second;
    at[j]=(*it).first;
    j++;it++;
    for(int k=0;k<6;k++){
        lista.insert( map< double,string >::value_type((*it).first,(*it).second) );
        it++;
    }

    //second
    for(int i=1;i<=8;i++){
        cin>>num>>time;
        list2.insert( map< double,string >::value_type(time,num) );
    }
    map< double,string >::iterator it1=list2.begin();
    an[j]=(*it1).second;
    at[j]=(*it1).first;
    j++;it1++;
    an[j]=(*it1).second;
    at[j]=(*it1).first;
    j++;it1++;
    for(int k=0;k<6;k++){
        lista.insert( map< double,string >::value_type((*it1).first,(*it1).second) );
        it1++;
    }

    //third
    for(int i=1;i<=8;i++){
        cin>>num>>time;
        list3.insert( map< double,string >::value_type(time,num) );
    }
    map< double,string >::iterator it2=list3.begin();
    an[j]=(*it2).second;
    at[j]=(*it2).first;
    j++;it2++;
    an[j]=(*it2).second;
    at[j]=(*it2).first;
    j++;it2++;
    for(int k=0;k<6;k++){
        lista.insert( map< double,string >::value_type((*it2).first,(*it2).second) );
        it2++;
    }

    //lista
    map< double,string >::iterator ita=lista.begin();
    an[j]=(*ita).second;
    at[j]=(*ita).first;
    j++;ita++;
    an[j]=(*ita).second;
    at[j]=(*ita).first;
    j++;ita++;


    //answer
    for(int i=0;i<8;i++){
        cout<<an[i]<<" ";
        printf("%.2f\n",at[i]);
    }
    return 0;
}

AOJ 0173

問題リンク Haunted House

・コメント
コレといった工夫はしていないです・・(笑)

・ソース

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

int main()
{
    string name;
    long long a,p;
    string c[10];
    long long num[10],mny[10];
    for(int i=0;i<9;i++){
        cin>>name>>a>>p;
        c[i]=name;
        num[i]=a+p;
        mny[i]=200*a+300*p;
    }
    for(int i=0;i<9;i++){
        cout<<c[i]<<" "<<num[i]<<" "<<mny[i]<<endl;
    }
    return 0;
}

AOJ 0197

・問題リンク Greatest Common Divisor: Euclidean Algorithm

・コメント
まさかx,yの大小関係を無視していて3回もWAくらう羽目に遭うとはwww
ここ最近一番の失態でしたw

・ソース

#include<iostream>
using namespace std;

int main()
{
    long long x,y;
    while(true){
        cin>>x>>y;
        if((x==0&&y==0)||y==0)break;
        if(y>x){
            long long t=x;
            x=y;
            y=t;
        }
        long long cnt=0;
        long long temp;
        while(y!=0){
            x=x%y;
            temp=x;
            x=y;
            y=temp;
            cnt++;
        }
        cout<<x<<" "<<cnt<<endl;
    }
    return 0;
}

AOJ 0195

・問題リンク What is the Most Popular Shop in Tokaichi?

・コメント
今回もmapを利用してソートしました。
また店の名前はchar型で表しました。

・ソース

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

int main()
{
    long a,p;
    while(true){
        cin>>a>>p;
        if(a==0&&p==0)break;
        map< long,char,greater<long> >list;
        char alp='A';
        list.insert( map< long,char >::value_type(a+p,alp) );
        alp++;
        for(int i=0;i<4;i++){
            cin>>a>>p;
            list.insert( map< long,char >::value_type(a+p,alp) );
            alp++;
        }
        //output
        map< long,char >::iterator it=list.begin();
        cout<<(*it).second<<" "<<(*it).first<<endl;
    }
    return 0;
}

AOJ 0184

・問題リンク Tsuruga Castle

・コメント
ゴリ押し実装でも時間制限間に合いましたw

・ソース

#include<iostream>
using namespace std;

int main()
{
    int n;
    while(true){
        cin>>n;
        if(n==0)break;
        long long p[8]={0};//人数の箱
        //input
        int age;
        for(int i=0;i<n;i++){
            cin>>age;
            if(age<10){
                p[0]++;
            }else if(age<20){
                p[1]++;
            }else if(age<30){
                p[2]++;
            }else if(age<40){
                p[3]++;
            }else if(age<50){
                p[4]++;
            }else if(age<60){
                p[5]++;
            }else{
                p[6]++;
            }
        }
        for(int i=0;i<7;i++){
            cout<<p[i]<<endl;
        }
    }
    return 0;
}

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;
}