最近点对

来源:互联网 发布:单片机控制8个led灯 编辑:程序博客网 时间:2024/05/22 01:58

最近点对

时间限制:1000 ms  |  内存限制:65535 KB
难度:0
描述

 

 

给出n个自然数,求出2个数绝对值之差最小的2个数,如果有多个满足要求,请输出其和最小的那对

输入
有多组测试数据

第一行一个整数n n>= 2
第二行是n个自然数的值
输出


输出最近的那2个数即可
样例输入
41 3 7 940 3 0 2
样例输出
1 30 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;}