杭电ACM1718 名次

第一种方法,用排序

#include <iostream>   
#include <string.h> 
using namespace std;  
long long a,b,c,d;  
long long num[107];  

int main ( )  
{  
    while (cin>>a)  
    {      
        memset( num,0,sizeof(num));  
        while (cin>>b>>c)  
        {  
            if(b==0&&c==0) break;
            {
                c=100-c;
            }
            if(b==a)
            { 
                d=c;
            }
            num[c]++;  
        }  
        for (int i=1;i<=100;i++)
        {
            num[i]=num[i-1]+num[i];
        }
        cout<<num[d-1]+1<<endl; 
    }  
}

第二种方法

#include<iostream>  
#include<algorithm>  
#include<string.h>  
using namespace std;  

struct Node  
{  
    int id;
    int score;  
};  

Node A[1100];  

int cmp(Node a,Node b)  
{  
    if(a.score != b.score)  
        return a.score > b.score;  
    return a.id < b.id;  
}  

int main()  
{  
    int id;  
    while(cin >> id)  
    {  
        int i = 0;  
        memset(A,0,sizeof(A));  
        while(cin >> A[i].id >> A[i].score)  
        {  
            if(A[i].id==0 && A[i].score==0)
            {  
                break;
            }
            i++;  
        }  
        sort(A,A+i,cmp);
        int rank = 0;  
        for(int j = 0; j < i; j++)
        {
            if(A[j].id == id)  
            {  
                int k = j-1;  
                while(A[k].score == A[j].score && k >= 0)  
                {  
                    k--;  
                    rank--;  
                }  
                cout << rank+1 << endl;  
            }
            else
            {  
                rank++;
            }
        }
    }  

    return 0;  
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值