比赛 20120309 评测结果 AAAAA
题目名称 积木分发 最终得分 100
用户昵称 Truth.Cirno 运行时间 0.000 s
代码语言 C++ 内存使用 0.00 MiB
提交时间 2012-03-09 20:11:10
显示代码纯文本
#include <cstdio>
#include <cstdlib>
using namespace std;

struct datatype
{
	int a,b;
}data[10001];

void swap(datatype &x,datatype &y)
{
	datatype temp;
	temp=x;
	x=y;
	y=temp;
}

void qqsort(int l,int r)
{
	int ll=l,rr=r,temp;
	temp=data[rand()%(r-l+1)+l].b;
	while (ll<=rr)
	{
		while (data[ll].b<temp)
			ll++;
		while (temp<data[rr].b)
			rr--;
		if (ll<=rr)
		{
			swap(data[ll],data[rr]);
			ll++;
			rr--;
		}
	}
	if (l<rr)
		qqsort(l,rr);
	if (ll<r)
		qqsort(ll,r);
}

int main(void)
{
	freopen("toybrick.in","r",stdin);
	freopen("toybrick.out","w",stdout);
	int i,n,s;
	bool done;
	scanf("%d%d",&n,&s);
	while (n!=0)
	{
		done=true;
		for (i=0;i<n;i++)
			scanf("%d%d",&data[i].a,&data[i].b);
		qqsort(0,n-1);
		for (i=0;i<n;i++)
		{
			if (s>=data[i].b)
				s+=data[i].a;
			else
			{
				done=false;
				break;
			}
		}
		if (done)
			printf("YES\n");
		else
			printf("NO\n");
		scanf("%d%d",&n,&s);
	}
	return(0);
}