practivceAlgorithm/백준

[백준][Python] 16938 캠프준비

findTheValue 2021. 9. 20. 14:38

평범한 조합문제입니다.

대신 조건에 만족하는 조합에서 return을 주면 그 후에 다른 수를 취하더라도 조건에 맞을 수 있는 경우가 걸러지기 때문에 return을 하면 안됩니다.

 

import sys
input = sys.stdin.readline

def dfs(idx, s, min_n, max_n):
    global cnt
    if L <= s <= R and max_n - min_n >= X:
        cnt += 1
    if s > R:
        return
    for next_idx in range(idx+1,N):
        dfs(next_idx, s+arr[next_idx], min(min_n, arr[next_idx]), max(max_n, arr[next_idx]))
N, L, R, X = map(int, input().split())
arr = list(map(int, input().split()))
cnt = 0
dfs(-1, 0, float('inf'), 0)
print(cnt)