View Code of Problem 133

#include<stdio.h>
#include<string.h>
#define max 1000000+10
int main()
{int i,m,flag,t, a[max],b[max],c[max],n;
scanf("%d",&t);
while(t--)
{scanf("%d%d",&n,&m);
flag=0;
memset(a,0,sizeof(a));
memset(b,0,sizeof(b));
memset(c,0,sizeof(c));
for(i=0;i<n;i++)
{scanf("%d",&a[i]);
if(a[i]>=0)
b[a[i]]++;
else
c[-a[i]]++;
}
for(i=0;i<n;i++)
{
if(m-a[i]>=0)
{if(a[i]==m-a[i]&&b[a[i]]>1) {flag=1;break;}
if(a[i]!=m-a[i]&&b[m-a[i]]) {flag=1;break;}
}
else{
if(a[i]==m-a[i]&&c[-a[i]]>1) {flag=1;break;}
if(a[i]!=m-a[i]&&c[a[i]-m]) {flag=1;break;}

}


}
printf(flag?"YES\n":"NO\n");
}
return 0;
}

Double click to view unformatted code.


Back to problem 133