记录编号 327199 评测结果 AAAAAAAAAA
题目名称 [USACO Nov07] 奶牛探险 最终得分 100
用户昵称 GravatarZwoi_只会打表抄代码的蒟蒻 是否通过 通过
代码语言 C 运行时间 0.065 s
提交时间 2016-10-21 20:40:21 内存使用 0.67 MiB
显示代码纯文本
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
int a[50010],i,t,n,sum,j,b[50010],ia,ib,x,ja,jb,p;
int comp(const void*a,const void*b)
{
	return *(int*)a-*(int*)b;
}
int main()
{
	
	freopen("explore.in","r",stdin);
	freopen("explore.out","w",stdout);
	scanf("%d%d",&t,&n);
	ia=ib=0;
	memset(a,0x3f3f3f3f,sizeof(a));
	memset(b,0x3f3f3f3f,sizeof(b));
	for(i=1;i<=n;i++)
	{
		scanf("%d",&x);
		if(x>0)
		{
			a[ia]=x;
			ia++;
		}
		else
		{
			b[ib]=x;
			ib++;
		}
	}
	p=j=ja=sum=0;
	jb=ib-1;
	qsort(a,ia,sizeof(int),comp);
	qsort(b,ib,sizeof(int),comp);
	while(sum<t)
	{
		
		if(ja>=ia&&jb<0)
		{
			printf("%d",j);
			return 0;
		}
		if((a[ja]<abs(b[jb])||jb<0)&&ja<ia)
		{
			sum+=a[ja]-p;
			p=a[ja];
			ja++;
		}
		else if((a[ja]>abs(b[jb])||ja>=ia)&&jb>=0)
		{
			sum+=abs(b[jb]-p);
			p=b[jb];
			jb--;
		}
		j++;
	}
	if(sum==t)  printf("%d",j);
	else printf("%d",j-1);
	return 0;
}