0061 - Rank Checker
#include <cstdio> #include <iostream> #include <queue> #include <vector> using namespace std; typedef pair<int,int> P_II; void Slove(void) { int number, point, before_number, before_point, team; vector<int> rank(1000,1); priority_queue< P_II,vector<P_II> > que; while ( scanf ("%d,%d", &number, &point) && (number || point) ) que.push( P_II(point,number) ); P_II p=que.top(); que.pop(); before_point=p.first; before_number=p.second; while ( !que.empty() ) { p=que.top(); que.pop(); if (before_point != p.first) rank[p.second]+=rank[before_number]; else rank[p.second]=rank[before_number]; before_point=p.first; before_number=p.second; } while (cin >> team) cout << rank[team] << endl; } int main(void) { Slove(); return 0; }
無駄に色々使いたかった。