-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathcut_the_array.py
57 lines (36 loc) · 2.19 KB
/
cut_the_array.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
'''
Есть массив h[] из 2n чисел.
Пусть массив h[] был разбит на два массива a[] и b[], оба длины n. Можно ли так разбить массив h[], чтобы выполнялось ai−bi≥x для всех i?
Входные данные
Первая строка входных данных содержит целое число t (1≤t≤100) — количество наборов входных данных. Каждый набор входных данных состоит из двух строк.
Первая строка каждого набора содержит два положительных целых числа n и x (1≤n≤100, 1≤x≤103).
Вторая строка каждого набора содержит 2n положительных целых чисел h1,h2,…,h2n (1≤hi≤103).
Обратите внимание, что сумма значений n по всем наборам входных данных в тесте никак не ограничена.
Выходные данные
Для каждого набора входных данных выведите «YES», если возмжно разбить массив h[] требуемым образом. В противном случае выведите «NO».
Вы можете выводить «YES» и «NO» в любом регистре (например, строки «yES», «yes» и «Yes» будут распознаны как правильный ответ).
'''
def f(nums, n, x):
nums = sorted(nums)
first_half = nums[:n]
second_half = nums[n:]
bad = False
for i in range(len(first_half)):
if second_half[i] - first_half[i] < x:
print('no')
bad = True
break
if not bad:
print('yes')
if __name__ == '__main__':
cases = int(input())
arr = list()
for _ in range(cases):
temp = list(input().split())
temp = list(map(int, temp))
n, x = temp[0], temp[1]
nums = (input().split())
nums = list(map(int, nums))
arr.append([nums,n,x])
for a in arr:
f(a[0], a[1], a[2])