HDU 2217 Visit

HDU 2217 Visit 


#include <iostream>
#include <cstdio>
#include <vector>
#include <algorithm>
#include <cmath>
using namespace std;

const int maxn=2013;
int n,sum;

void computing(){
	int x=0,na=0,nb=0,a[maxn],b[maxn],ans=0;
	a[na++]=0;a[nb++]=0;
	for(int i=0;i<n;i++){
		scanf("%d",&x);
		if(x>=0) a[na++]=x;
		else b[nb++]=-x;
	}
	sort(a,a+na);sort(b,b+nb);
	for(int i=0;i<na;i++){
		if(sum<2*a[i]) break;
		for(int j=0;j<nb;j++){
			int t=sum-2*a[i];
			if(t<b[j]) break;
			ans=max(ans,i+j);
		}
	}
	for(int i=0;i<nb;i++){
		if(sum<2*b[i]) break;
		for(int j=0;j<na;j++){
			int t=sum-2*b[i];
			if(t<a[j]) break;
			ans=max(ans,i+j);
		}
	}
	cout<<ans<<endl;
}

int main(){
	while(scanf("%d%d",&n,&sum)!=EOF){
		computing();
	}
	return 0;
}


posted @ 2013-08-19 14:36  炒饭君  阅读(108)  评论(0)    收藏  举报