16938.캠프 준비https://www.acmicpc.net/problem/16938
- 내 풀이
- 문제 난이도의 합은 L보다 크거나 같고, R보다 작거나 같아야 한다
- 가장 어려운 문제와 가장 쉬운 문제의 난이도 차이는 X보다 크거나 같아야 한다.
- 두 기준에 맞지 않아도 return 하면 X
- -> 2개 이상을 선택했을 때 모두 체크해야하기 때문에
- 적은 숫자에서 return 되버리면 다음 수를 추가했을 때의 경우를 체크해볼 수가 없음.
n, l, r, x = map(int, input().split())
problems = list(map(int, input().split()))
problems.sort()
ans = 0
def comb(start, cnt, tmp):
global ans
if cnt >= 2:
if (l <= sum(tmp) <= r) and (max(tmp)-min(tmp) >= x):
ans += 1
if cnt == n:
return
for i in range(start, n):
tmp.append(problems[i])
comb(i+1, cnt+1, tmp)
tmp.pop()
comb(0, 0, [])
print(ans)