题意:给你n个学号和成绩,并且给定一个学号,让找这个学号是多少名。
析:用个结构体,按成绩排序,然后找那个学号,这个题有一个小坑,那就是并列的情况,
可能并列多少名,这个要考虑一下,其他的easy!
代码如下:
#include <iostream> #include <cstdio> #include <algorithm> #include <queue> #include <vector> #include <cstring> #include <map> #include <cctype> using namespace std; const int maxn = 1000 + 5; struct node{ int id, score; bool operator < (const node &p) const { return score > p.score; } }; node a[maxn]; int main(){ // freopen("in.txt", "r", stdin); int ID; while(scanf("%d", &ID) == 1){ int indx = 0; while(true){ scanf("%d %d", &a[indx].id, &a[indx].score); if(!a[indx].id) break; ++indx; } sort(a, a+indx); for(int i = 0; i < indx; ++i) if(a[i].id == ID){ for(int j = i; j >= 0; --j) if(a[j].score != a[i].score){ printf("%d ", j+2); break; } break; } } return 0; }