我的快排为啥炸了
查看原帖
我的快排为啥炸了
48039
漳平陈嘉琦楼主2018/7/3 12:01

如上

#include<iostream>
using namespace std;
int n,m,t,money;
int p[5001],a[5001];
int kp(int l,int k)
{
	int h,i=l,j=k,t1;
	h=p[(i+j)/2];
	do
	{
		while(p[i]<h) i++;
		while(p[j]>h) j++;
		if(i<=j)
		{
			t1=p[i];p[i]=p[j];p[j]=t1;
			t1=a[i];a[i]=a[j];a[j]=t1;
			i++;j--;
		}
	}while(i<=j);
	if(l<j) kp(l,j);
	if(i<k) kp(i,k);
}
int main()
{
	cin>>n>>m;
	for(int i=1;i<=m;i++)
		cin>>p[i]>>a[i];
	kp(1,m);
	int i=1;
	while(t<n)
	{
		t++;
		money+=p[i];
		a[i]--;
		if(a[i]==0)
		i++;
	}
	cout<<money;
}
2018/7/3 12:01
加载中...