/*輸入
每組測試數據的第一行為一個整數K(0<=K<=10000),第二行為數組A(1 <= A.length <= 10000,0 <= A[i] <= 10000)
輸出
對每組測試數據,在單獨的一行里輸出最小的差值。
樣例輸入
3
1 3 6
樣例輸出
3*/
#include "stdafx.h"
#include <iostream>
#include <vector>
#include <numeric>
#include <limits>
using namespace std;
int smallestRange(int k, int *A, int len)
{
int i = len;
int add[10000], jian[10000];
for (int j = 0; j<i; j++)
{
add[j] = A[j] + k;
jian[j] = A[j] - k;
}
int min = 0;
for (int j = 0; j<i - 1; j++)
{
for (int q = j + 1; q<i; q++)
{
int ta1 = add[j] - add[q];
int ta2 = -1 * ta1;
int tj1 = jian[j] - jian[q];
int tj2 = -1 * tj1;
if (ta1<ta2&&ta1<tj1&&ta1<tj2)
{
min = ta1;
}
else{
if (ta2<ta1&&ta2<tj1&&ta2<tj2)
{
min = ta2;
}
else{
if (tj1<ta1&&tj1<ta2&&tj1<tj2)
{
min = tj1;
}
else{
min = tj2;
}
}
}
}
}
return min;
}
int _tmain(int argc, _TCHAR* argv[])
{
int k;
cout << "K" << endl;
cin >> k;
int A[10000];
int in = 0, i = 0;
cout << "A" << endl;
while (in >= 0)
{
cin >> in;
A[i] = in;
i++;
}
int len = i-1;
int res;
res = smallestRange(k, A, len);
cout << res << endl;
return 0;
}