AOJ 0138 - Track and Field Competition

単なる実装.少数の時はprintfを使うと書きやすい事に気づきました.
今回の場合は,精度が必要無いのでfloatでもよさそうですね.

#include <iostream>
#include <algorithm>
#include <cstdio>
struct athlete{int num; double time;};

bool tsort(const athlete& l, const athlete& r){
	return l.time < r.time;
}

int main(){
	athlete a[3][8], f[3];
	for(int i=0;i<3;i++){
		for(int j=0;j<8;j++){
			int num;
			double time;
			std::cin >> num >> time;
			a[i][j].num = num, a[i][j].time = time;
		}
		std::sort(a[i],a[i]+8,tsort);

		//3位を最終選考に回す.
		f[i] = a[i][2];
	}

	//各組の1位と2位を表示
	for(int i=0;i<3;i++){
		printf("%d %.2lf\n",a[i][0].num,a[i][0].time);
		printf("%d %.2lf\n",a[i][1].num,a[i][1].time);
	}

	//各組の3位より上位2人を決勝へ.
	std::sort(f,f+3,tsort);
	printf("%d %.2lf\n",f[0].num,f[0].time);
	printf("%d %.2lf\n",f[1].num,f[1].time);
}