HDOJ ACMstep 1.3.8 Rank(特殊的排序)

来源:互联网 发布:线性时间选择c语言 编辑:程序博客网 时间:2024/06/11 00:45
解体思路:先按分数排序,因为有并列排名的情况,如果不是并列的,排名就是数组下标。如果是并列的情况下,同等分数里第一个出现的,他的数组下标就是并列的排名。所以把出现jackson的优先排序。




#include  #include  #include  using namespace std;int jack;struct stu  //建立一个结构体{int number;int mark;}st[1010];bool cmp(stu a, stu b)//比较函数{if (a.mark == b.mark)return a.number == jack;//同等分数下,优先选择为jackson的学号return a.mark > b.mark;}int main(){while (cin >> jack){int i = 0;while (1){cin >> st[i].number >> st[i].mark;if (st[i].number == 0 && st[i].mark == 0)break;i++;}sort(st, st + i, cmp);for (int j = 0; j < i; j++)//找到jackson的位置{if (st[j].number == jack) {cout << j + 1 << endl; break;}}}return 0;}
原创粉丝点击