Given an array A[] of N numbers and another number x, determine whether or not there exist three elements in A[] whose sum is exactly x.
Input:
First line of input contains number of testcases T. For each testcase, first line of input contains n and x. Next line contains array elements.
First line of input contains number of testcases T. For each testcase, first line of input contains n and x. Next line contains array elements.
Output:
Print 1 if there exist three elements in A whose sum is exactly x, else 0.
Print 1 if there exist three elements in A whose sum is exactly x, else 0.
Constraints:
1 ≤ T ≤ 100
1 ≤ N ≤ 103
1 ≤ A[i] ≤ 105
1 ≤ T ≤ 100
1 ≤ N ≤ 103
1 ≤ A[i] ≤ 105
Example:
Input:
2
6 13
1 4 45 6 10 8
5 10
1 2 4 3 6
Input:
2
6 13
1 4 45 6 10 8
5 10
1 2 4 3 6
Output:
1
1
1
1
Explanation:
Testcase 1: There is one triplet with sum 13 in the array. Triplet elements are 1, 4, 8, whose sum is 13.
Testcase 1: There is one triplet with sum 13 in the array. Triplet elements are 1, 4, 8, whose sum is 13.
Solution 1:(Brute-Force or Simple Method) in O(n^3)
import java.lang.*;
import java.io.*;
class Sushil
{
static int getCount(int a[],int x)
{
Arrays.sort(a);
int n=a.length;
for(int i=0;i<n;i++)
{
for(int j=i+1;j<n;j++)
{
for(int k=j+1;k<n;k++)
{
if((a[i]+a[j]+a[k])==x)
return 1;
}
}
}
return 0;
}
public static void main (String[] args)
{
Scanner sc=new Scanner(System.in);
int t=sc.nextInt();
while(t-->0)
{
int n=sc.nextInt();
int x=sc.nextInt();
int a[]=new int[n];
for(int i=0;i<n;i++)
a[i]=sc.nextInt();
System.out.println(getCount(a,x));
}
}
}
import java.io.*;
class Sushil
{
static int getCount(int a[],int x)
{
Arrays.sort(a);
int n=a.length;
for(int i=0;i<n-2;i++)
{
int l=i+1;
int r=n-1;
while(l<r)
{
if(a[i]+a[l]+a[r]==x)
return 1;
if(a[i]+a[l]+a[r]<x)
l++;
else
r--;
}
}
return 0;
}
public static void main (String[] args)
{
Scanner sc=new Scanner(System.in);
int t=sc.nextInt();
while(t-->0)
{
int n=sc.nextInt();
int x=sc.nextInt();
int a[]=new int[n];
for(int i=0;i<n;i++)
a[i]=sc.nextInt();
System.out.println(getCount(a,x));
}
}
}
import java.io.*;
class Sushil
{
static int getCount(int a[],int x)
{
Arrays.sort(a);
int n=a.length;
for(int i=0;i<n;i++)
{
for(int j=i+1;j<n;j++)
{
for(int k=j+1;k<n;k++)
{
if((a[i]+a[j]+a[k])==x)
return 1;
}
}
}
return 0;
}
public static void main (String[] args)
{
Scanner sc=new Scanner(System.in);
int t=sc.nextInt();
while(t-->0)
{
int n=sc.nextInt();
int x=sc.nextInt();
int a[]=new int[n];
for(int i=0;i<n;i++)
a[i]=sc.nextInt();
System.out.println(getCount(a,x));
}
}
}
Solution 2:(Sorting Technique) in O(n^2)
import java.lang.*;import java.io.*;
class Sushil
{
static int getCount(int a[],int x)
{
Arrays.sort(a);
int n=a.length;
for(int i=0;i<n-2;i++)
{
int l=i+1;
int r=n-1;
while(l<r)
{
if(a[i]+a[l]+a[r]==x)
return 1;
if(a[i]+a[l]+a[r]<x)
l++;
else
r--;
}
}
return 0;
}
public static void main (String[] args)
{
Scanner sc=new Scanner(System.in);
int t=sc.nextInt();
while(t-->0)
{
int n=sc.nextInt();
int x=sc.nextInt();
int a[]=new int[n];
for(int i=0;i<n;i++)
a[i]=sc.nextInt();
System.out.println(getCount(a,x));
}
}
}
No comments:
Post a Comment