为什么快排也有一个T啊
查看原帖
为什么快排也有一个T啊
1180744
siyecao8963楼主2023/11/8 08:44
#include <stdio.h>
void fuck(int l,int r); 
int a[1000005],b[1000005];
int main()
{
	int n,zs,sum;
	scanf("%d",&n);
	for (int i=1;i<=n;i++) scanf("%d %d",&a[i],&b[i]);
	fuck(1,n);
	for (int i=1;i<=n;i++)
	zs=b[1];sum=1;
	for (int i=2;i<=n;i++)
	if (a[i]>=zs)
	{
		zs=b[i];
		sum++;
	}
	printf("%d\n",sum);
}
void fuck(int l,int r)
{
	if (l>=r) return;
	int i,j,t,base;
	i=l;j=r;
	base=b[l];
	while (i<j)
	{
	    while (i<j && base<=b[j]) j--;
		while (i<j && base>=b[i]) i++;
		if (i<j) {
			t=a[i];
			a[i]=a[j];
			a[j]=t;
			t=b[i];
			b[i]=b[j];
			b[j]=t;
		}
	}
		t=a[l];
		a[l]=a[i];
		a[i]=t;
		t=b[l];
		b[l]=b[i];
		b[i]=t;
		fuck(l,j-1);
		fuck(j+1,r);
}
2023/11/8 08:44
加载中...