기본적으로 배웟던 DFS로 하는데..
40점 나오고 심지어
엄청 오래걸려서 fix 했다..;;
공개할 필요 없지만 굳이 풀이를 보이자면
DFS만 참고하면 이렇다..강의나 봐야지
두가닥으로 뻗으면 된다
예를들어
{1 2 3 4 5} 에서
1을 푼다, 풀지않는다
2를 푼다, 풀지않는다
3을 푼다, 풀지않는다
4를 푼다, 풀지않는다
5를 푼다, 풀지않는다
그리고 마지막에 판단하면 된다.
아 너무 쉽고 ;;
생각을 하나로 하는 것 밖에 안되는
단세포 안유진,...휴''
import sys
sys.stdin = open("input.txt", "rt")
def DFS(L, sum, time):
global res
if time > m:
return
if L == n:
if sum > res:
res=sum
else:
DFS(L+1,sum+pv[L], time+pt[L])
DFS(L+1,sum, time)
if __name__ == "__main__":
n,m = map(int,input().split()) # 5 20
pv=list()
pt=list()
for i in range(n):
a, b = map(int,input().split())
pv.append(a)
pt.append(b)
res=-2147000000
DFS(0, 0, 0) #Level , Score, Time 여긴 논리가 비슷하네..
print(res)