2009-10-02 22:39:43來源不明

板橋高中98-2模擬測驗 B-成績單

作法: 內建快排

由於遞回快排超過10萬次(約)就會爆掉,所以用內建吧

/*********************************************************/

#include<stdlib.h>
#include<stdio.h>
int s1[1000000],s2[1000000];
int compare(const void *a,const void *b)
{
   int *aa=(int*)a,*bb=(int*)b;
   if(*aa>*bb) return -1;
   if(*aa==*bb) return 0;
   if(*aa<*bb) return 1;  
}
int input()  
{  
  char cha;  
  int x=0;  
  while(cha=getchar())  
     if(cha!=' '&&cha!='\n') break;  
  x=cha-48;  
  while(cha=getchar())   
    {  
     if(cha==' '||cha=='\n') break;  
      x=x*10+cha-48;  
    }  
    return x;  
}
main()
{
  int N,top1=0,top2=0,k,a,b;
  scanf("%d",&N);
  while(N--)
     {
        a=input();b=input();
        if(a==1)
           s1[top1++]=b;
        else
           s2[top2++]=b;
     }
  qsort(s1,top1,sizeof(int),compare);
  qsort(s2,top2,sizeof(int),compare);
  scanf("%d",&k);
  if(s1[k-1]>s2[k-1])
     printf("1 %d\n",s1[k-1]-s2[k-1]);
  else
     printf("2 %d\n",s2[k-1]-s1[k-1]);
   return 0;
}