最近点对
时间限制:
1000 ms | 内存限制:
65535 KB
难度:
0
-
描述
-
给出n个自然数,求出2个数绝对值之差最小的2个数,如果有多个满足要求,请输出其和最小的那对
-
输入
-
有多组测试数据
第一行一个整数n n>= 2
第二行是n个自然数的值
输出
-
输出最近的那2个数即可
样例输入
-
4 1 3 7 9 4 0 3 0 2
样例输出
-
1 3 0 0
代码
#include <cstdio> #include <iostream> #include <algorithm> using namespace std; int main() { int n, a[1001], i; while ( scanf("%d", &n) != EOF ) { int k = 0, ans = 0; for (i = 0; i < n; i++) scanf("%d", &a[i]); sort(a, a+n); for (i = 0; i < n-1; i++) { if (i == 0) ans = a[1] - a[0]; if (a[i+1] - a[i] < ans) { ans = a[i+1] - a[i]; k = i; } } printf("%d %d\n", a[k], a[k+1]); } return 0; }
-
有多组测试数据