AOJ 0061 - Rank Checker

ゆっくり考えすぎだから時間意識して解こう.
正確さも早さもない僕にはそれしかない.

#include <cstdio>
#include <map>
#include <vector>
#include <algorithm>

typedef std::pair<int,int> Entrant;

bool descending_Entrant(const Entrant& e1, const Entrant& e2){
	return e1.second > e2.second;
}

int main(){
	int num, points;
	std::vector<Entrant> v;
	std::map<int,int> m;
	while(scanf("%d,%d", &num, &points), num){
		v.push_back(Entrant(num, points));
	}

	std::sort(v.begin(), v.end(), descending_Entrant);

	int rank = 1;
	for(int i=0;i<v.size();i++){
		m[v[i].first] = rank;
		if(i+1 < v.size() && v[i].second != v[i+1].second)rank++;
	}

	int n;
	while(~scanf("%d", &n)){
		printf("%d\n", m[n]);
	}
}