단단한 배낭 문제
시간 제한1초메모리 제한512 MB
무게와 비용이 있는 n개의 물건과 용량 W가 주어질 때, 총 무게가 1.5W를 넘지 않으면서 용량 W의 최적 비용 이상인 물건 집합을 찾습니다.
문제
배낭 문제는 컴퓨터 과학의 고전적인 문제이다.
문제는 다음과 같이 주어진다. 개의 물건이 있고, 각 물건마다 무게 와 비용 를 알고 있다. 배낭의 용량 도 알고 있으며, 이는 담을 수 있는 물건들의 총무게 상한이다. 목표는 총무게가 이하가 되도록 물건을 여러 개 골라 총비용을 최대한 크게 만드는 것이다.
이 문제에서는 고전적인 배낭 문제를 풀 필요가 없다. 심판은 이미 문제를 풀어 정확한 답을 구했다. 는 용량 인 배낭에 들어갈 수 있는 물건들의 총비용 최댓값이다. 심판은 이 값을 알려 주지 않는다.
여러분의 과제는 단단한 배낭 문제를 푸는 것이다. 이 배낭은 용량이 라고 주장하지만, 무게 까지의 물건을 담을 수 있다. 이 완화된 제약에서 얻은 해가 심판이 원래 제약 로 얻은 해보다 나쁘지 않아야 한다.
다시 말해, 총비용이 이상이고 총무게가 이하인 물건의 집합을 찾아야 한다.
입력
입력 데이터에는 하나 또는 여러 개의 테스트 케이스가 들어 있다.
첫 줄에는 테스트 케이스의 개수가 주어진다. 이후 테스트 케이스가 다음 형식으로 이어진다.
각 테스트 케이스의 첫 줄에는 두 정수 과 (; )가 주어진다. 각각 물건의 개수와 배낭의 주장된 용량이다.
다음 개의 줄은 물건을 나타낸다. 각 줄에는 두 정수 와 ()가 주어지며, 각각 물건의 무게와 비용이다.
모든 테스트 케이스의 을 합하면 이하이다.
출력
각 테스트 케이스마다 무게 제한 에 맞는 선택한 물건들의 집합을 다음 형식으로 출력한다.
첫 줄에는 선택한 물건의 개수를 출력한다.
둘째 줄에는 선택한 물건의 번호 ()를 출력한다. 모든 는 서로 달라야 한다. 물건의 번호는 입력에 주어진 순서대로 1부터 까지이다.
해가 여러 개라면 그중 아무거나 하나를 출력하면 된다.