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