이번 문제는 파이썬의 itertools 모듈을 사용하여 해결하였다. 2부터 n까지 반복하는 i에 대한 for문을 돌려 i개로 이루어진 combinations를 모두 생성하고, 생성된 combinations들을 순회하며 전체 합, 최댓값과 최솟값의 차를 l, r, x와 비교하여 조건에 만족할 경우 결과 변수를 증가시키는 방식으로 풀이하였다.
combinations(a, i)
를 list 타입으로 추가한다.case[i]
의 합이 l 이상, r 이하이고, case[i]의 최댓값 - case[i]의 최솟값
이 x 이상일 경우,import itertools
n, l, r, x=map(int, input().split())
a=list(map(int, input().split()))
answer=0
case=[]
for i in range(2, n+1):
case+=list(itertools.combinations(a, i))
for i in range(len(case)):
if l<=sum(case[i])<=r and max(case[i])-min(case[i])>=x:
answer+=1
print(answer)