第一种方法,用排序
#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;
}