0138 - Track and Field Competition
#include <cstdio> #include <iostream> #include <map> using namespace std; void Slove(void) { int number; double time; map<double,int> top, third; third.clear(); for (int i=0; i<3; ++i) { top.clear(); for (int j=0; j<8; ++j) { cin >> number >> time; top.insert( map<double,int>::value_type(time,number) ); } int rank=0; for (map<double,int>::iterator it=top.begin(); it!=top.end(); ++it) { if (rank < 2) printf ("%d %.2lf\n", it->second, it->first); else third.insert( map<double,int>::value_type(it->first,it->second) ); ++rank; } } map<double,int>::iterator it=third.begin(); for (int i=0; i<2; ++i, ++it) printf ("%d %.2lf\n", it->second, it->first); } int main(void) { Slove(); return 0; }
mapを用いる、数字の場合は必然的に昇順。
3組8人ずつに分けて上位2名の情報を表示、それ以外の選手情報を違うmapに代入。
最後に各3組上位2名ずつを除いた上位2名を表示。
~了~