排名

来源:互联网 发布:中国近代美术大师知乎 编辑:程序博客网 时间:2024/06/08 15:49

排名

Time Limit : 3000/1000ms (Java/Other)   Memory Limit : 65535/32768K (Java/Other)
Total Submission(s) : 26   Accepted Submission(s) : 13

Font: Times New Roman | Verdana | Georgia

Font Size:  

Problem Description

校赛终于开始了,比赛后,自我感觉很好的狗狗迫不及待的打开了比赛的Ranklist,然后根据比赛规则开始算自己的排名,可是,比赛的人数太多了,狗狗的大脑有些不够用了,于是他就想请聪明的你来写个程序来算算,他这次排第几呢?
已知排名规则如下:
1、做出题目多的排名较前。
2、做出题目数相同的,罚时少的较前。
3、题目数和罚时相同的,排名一样,之后排名跳过,例如,有三个人并列
第2,那么之后的那人将排名第5。

Input

第一行输入N(N >= 15),表示比赛人数。
以下N行,每行输入姓名(不超过10个字符)、题目数(0<=n<=8)、罚时(非
负整数)。

Output

输出狗狗(姓名为gougou)的排名

Sample Input

15yang 3 27miao 5 23kuo 2 25lvsi 6 19 acq 8 1gougou 5 35xiaoyou 3 23paopao 5 59miyu 3 18xiaoy 0 39xuwa 6 37pu 2 78kang 1 98xiaobao 1 58dd 0 100

Sample Output

5
#include <vector>#include <algorithm>#include <string>#include <iostream>using namespace std;struct pm{    string name;    int tm,fs;};bool bmp(pm a,pm b){    if(a.tm!=b.tm) return a.tm>b.tm;    else if(a.fs!=b.fs) return a.fs<b.fs;}vector<pm> v;int main (){    string s;    int m,cnt,i,n;    pm st;    while (cin>>n)    {        v.clear();        for (i=0;i<n;i++)        {            cin>>st.name>>st.tm>>st.fs;            v.push_back(st);        }        sort(v.begin(),v.end(),bmp);        if (v[0].name=="gougou")            cout<<"1"<<endl;        cnt=m=1;        for (i=1;i<v.size();i++)        {            if(v[i].tm==v[i-1].tm&&v[i].fs==v[i-1].fs)            {                if (v[i].name=="gougou")                {                    cout<<cnt<<endl;                    break;                }                else                    cnt=m;            }            else            {                m=i+1;                if(v[i].name=="gougou")                    cout<<i+1<<endl;            }        }    }    return 0;}
原创粉丝点击