#include <stdio.h>
struct A
{
int n;
int m;
} stu[200];
int main () {
int n,i,j,a,b[2][200],c=0,q[2][200],s=0,m,x=0,k,max;
int temp1,tempnum;
int t=1,f=0;
scanf ("%d",&n);
for (i=1; i<=n; i++)//输入
scanf ("%d %d",&stu[i].n,&stu[i].m);
for (i=1; i<=n; i++) {
for (a=1; a<=n; a++) {
if (stu[a].n<stu[i].n&&stu[a].m==0) c++;
if (stu[a].n>=stu[i].n&&stu[a].m==1) c++;
}
b[0][i-1]=stu[i].n;
b[1][i-1]=c;
c=0;
}
/*for (i=0; i<2; i++) {
for (j=0; j<n; j++)
printf ("%d ",b[i][j]);
printf ("\n");
}*/
for(i=0; i<n; i++)
for(j=0; j<i; j++)
if(b[0][j]==b[0][i])
b[0][i]=-1;
for(i=0; i<n; i++) {
if(b[0][i]!=-1) {
q[0][s]=b[0][i];
q[1][s]=b[1][i];
s++;
}
m=b[1][0];
/*for(i=0;i<n;i++){
while(b[1][i]>m){
m=a[i]; //计算最大值
x++; //x计算最小下标
}
}*/
}
//printf ("%d %d ",q[0][2],q[1][2]);
/*for (i=0; i<2; i++) {
for (j=0; j<s; j++)
printf ("%d ",q[i][j]);
printf ("\n");
}*/
for(i=0;i<s-1;i++)
{
for(j=0;j<s-i-1;j++)
{
if(q[1][j]<q[1][j+1])
{
temp1=q[1][j]; q[1][j]=q[1][j+1]; q[1][j+1]=temp1;
tempnum=q[0][j]; q[0][j]=q[0][j+1]; q[0][j+1]=tempnum;
}
}
}
/*for (i=0; i<2; i++) {
for (j=0; j<s; j++)
printf ("%d ",q[i][j]);
printf ("\n");
}*/
for(i=0;i<s;i++)
{
if(q[1][i]!=q[1][i+1])
{k=i;break;}
}
//printf("%d ",k);
max=q[0][0];
for(i=0;i<k+1;i++)
if (max<q[0][i])
max=q[0][i];
printf ("%d",max);
return 0;
}代码片