View Code of Problem 133

#include<stdio.h>
#include<string.h>
#define MAX 100000+10
int a[MAX],b[MAX],c[MAX];
int main(){
	int n,flag,x,tc;
	scanf("%d",&tc);
	while(tc--){
		scanf("%d%d",&n,&x);
		flag=0;
		memset(a,0,sizeof(a));
		memset(b,0,sizeof(b));
		memset(c,0,sizeof(c));
		for(int i=0;i<n;i++){
			scanf("%d",a+i);
			if(a[i]>=0)
			b[a[i]]++;
			else c[a[i]]++;
		}
		for(int i=0;i<n;i++){
			if(x-a[i]>=0){
				if(a[i]==x-a[i]&&b[a[i]]>1){flag=1;break;}
				if(a[i]!=x-a[i]&&b[x-a[i]]){flag=1;break;}
			}
			else {
				if(a[i]==x-a[i]&&c[a[i]]>1){flag=1;break;}
				if(a[i]!=x-a[i]&&c[x-a[i]]){flag=1;break;}
			}
		}
		printf(flag?"YES\n":"NO\n");
	}
	return 0;
}

Double click to view unformatted code.


Back to problem 133