package com.interview.number;
/**
* Write a program to determine whether n/2 distinctive pairs can be formed
* from given n integers where n is even and each pair's sum is divisible by given k.
* Numbers cannot be repeated in the pairs, that means only you can form total n/2 pairs.
*/
public class NBy2PairSumToK {
//assuming input is from 1 to n. If input can contain 0 special logic will be needed
//to handle that.
public boolean pair(int input[],int k){
int count[] = new int[k];
for(int i=0; i < input.length; i++){
count[input[i]%k]++;
}
if(count[0]%2 != 0){
return false;
}
if(k%2==0){
if(count[k/2]%2 != 0){
return false;
}
}
for(int i=1; i <= k/2; i++){
if(count[i] != count[k-i]){
return false;
}
}
return true;
}
public static void main(String args[]){
int input[] = {5,7,6,8,2,6,10,4};
NBy2PairSumToK nb = new NBy2PairSumToK();
System.out.println(nb.pair(input, 6));
}
}