Array 46. Дано число R и массив размера N. Найти два различных элемента массива, сумма которых наиболее близка к числу R, и вывести эти элементы в порядке возрастания их индексов (определение наиболее близких чисел дано в задании Array40).

Решение на Python 3

import random
N = random.randrange(2,21)
a = [random.randrange(1,100) for i in range(N)]
R = random.randrange(1,201)

print("N:",N)
print("Array:",a)
print("R:",R)

d_min = abs(R - (a[0] + a[1]))
i_min = 0
j_min = 1
for i in range(0,N-1) :
for j in range(i+1,N) :
#print(i,":",j)
d_tmp = abs(R - (a[i] + a[j]))
if d_min > d_tmp :
d_min = d_tmp
i_min = i
j_min = j

print("Indices:", i_min,",",j_min)
print("Elements:", a[i_min],",",a[j_min])
print("Sum:", a[i_min] + a[j_min])
print("Min Diff:", d_min)