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;
}

浙公网安备 33010602011771号