昨天看到很多ACMER的BLOG都講的挺詳細的,回頭看看自己的博客真的好簡陋啊,但是我覺得最好的描述還是代碼,一個人的代碼閱讀能力是他整體實力的表現,呵呵。
2726是一個快排的題目。
#include "stdio.h"
int h[10005][3];
int pc[10005];
void swap(int a,int b)


{
int t0,t1,t2;
t0=h[a][0];
t1=h[a][1];
t2=h[a][2];
h[a][0]=h[b][0];
h[a][1]=h[b][1];
h[a][2]=h[b][2];
h[b][0]=t0;
h[b][1]=t1;
h[b][2]=t2;
}
int partion(int low,int high,int p,int m)


{
while(low<=high)

{
if(low<p)

{

if(h[low][m]>h[p][m])
{swap(low,p);p=low;}
low++;
}
else

{
if(high>p)

{

if(h[high][m]<h[p][m])
{swap(high,p);p=high;}
}
high--;
}
}
return p;
}
void qsort(int left,int right,int m)


{
int middle;
if(left<right)

{
middle=(left+right)/2;
middle=partion(left,right,middle,m);
qsort(left,middle-1,m);
qsort(middle+1,right,m);
}
}
int main()


{
int i,n,minc,count;
while(1)

{
scanf("%d",&n);
if(n==0)break;
for(i=0;i<n;i++)

{
scanf("%d%d",&h[i][0],&h[i][1]);
h[i][2]=i;
}
qsort(0,n-1,0);
minc=h[0][1];
count=0;
for(i=0;i<n;i++)pc[i]=0;
pc[h[0][2]]=1;
for(i=1;i<n;i++)

{

if(h[i][1]<minc)
{pc[h[i][2]]=1;minc=h[i][1];}
}
qsort(0,n-1,1);
minc=h[0][0];

if(pc[h[0][2]]==1)
{count++;}
for(i=1;i<n;i++)

{
if(h[i][0]<minc)

{
minc=h[i][0];

if(pc[h[i][2]]==1)
{count++;}
}
}
printf("%d\n",count);
}
return 0;
}
2726是一個快排的題目。

























































































































