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