Given a list of unsorted integers, find the pair of elements that have the smallest absolute difference between them. If there are multiple pairs, find them all.
Input Format
The first line contains a single integer , the length of the list.
The second line contains space-separated integers, .
Output Format
Output the pairs of elements with the smallest difference. If there are multiple pairs, Output any one of them.
Sample Input 0
10
-20 -3916237 -357920 -3620601 7374819 -7330761 30 6246457 -6461594 266854
Sample Output 0
-20 30
Explanation 0
(30) - (-20) = 50, which is the smallest difference.
Sample Input 1
12
-20 -3916237 -357920 -3620601 7374819 -7330761 30 6246457 -6461594 266854 -520 -470
Sample Output 1
-520 -470
Explanation 1
(-470) - (-520) = 30 - (-20) = 50, which is the smallest difference. Only the first pair is given as output.
Sample Input 2
4
5 4 3 2
Sample Output 2
2 3
#include <math.h>
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char* argv[]) {
int i, j;
int size;
int* values;
int min_difference;
int first_number;
int second_number;
scanf("%d", &size);
if (size > 0)
{
values = (int*)malloc(sizeof(int)* (size + 1));
for (i = 0; i < size; i++)
scanf("%d", &values[i]);
if (size > 1)
{
min_difference = abs(values[0] - values[1]);
first_number = values[0];
second_number = values[1];
for (i = 0; i < size - 1; i++)
for (j = i + 1; j < size; j++)
if (min_difference > abs(values[i] - values[j]))
{
min_difference = abs(values[i] - values[j]);
first_number = values[i];
second_number = values[j];
}
printf("%d %d\n", first_number, second_number);
}
free(values);
}
return 0;
}
Comments
Leave a comment