메뉴 투어
시간 제한2초메모리 제한512 MB
예산 B 안에서 1번부터 C번 코스를 순서대로 제공하는 식당들을 골라 이동 거리 합을 최소화하고, 불가능하면 -1을 출력한다.
문제
라시드는 바르셀로나를 처음 방문했고 제대로 된 저녁 식사를 하고 싶다. 최고의 저녁 식사는 개의 코스로 이루어지며, 코스에는 번부터 번까지 번호가 붙어 있고 반드시 번호 순서대로 먹어야 한다.
바르셀로나의 도로는 동서 방향 도로와 남북 방향 도로가 직교하는 규칙적인 격자를 이룬다. 도시에 식당이 개 있고 모두 교차점에 있다. 교차점 에서 교차점 까지 걸어가는 데 걸리는 시간은 정확히 분이다. 여기서 는 서쪽에서 번째 도로와 남쪽에서 번째 도로가 만나는 교차점을 뜻한다.
식당이 모든 코스를 파는 것은 아니다. 식당 가 코스 를 판다면 가격은 유로다. 이면 그 식당은 그 코스를 팔지 않는다. 라시드가 저녁 식사에 쓸 수 있는 돈은 유로다. 예산을 넘기지 않고 최고의 저녁 식사를 마칠 수 있는 식당 순서를 고르되, 식당 사이를 이동하는 총 시간을 최소로 하려고 한다. 투어는 아무 교차점에서나 시작하고 아무 교차점에서나 끝낼 수 있으며, 같은 식당을 여러 번 방문해도 된다.

그림의 예에서 코스는 세 개이고, 식당마다 코스 번호 순서대로 가격이 적혀 있다. -는 그 코스를 팔지 않는다는 뜻, 즉 인 경우다. 예산이 유로라면 최적 투어는 식당 을 차례로 방문하는 것이고, 비용은 유로, 총 이동 시간은 분이다. 식당 를 차례로 방문하면 이동 시간이 분으로 더 짧지만 비용이 유로여서 예산 유로를 넘는다.
입력
첫째 줄에 정수 , , 가 공백 하나로 구분되어 주어진다. 이어서 개의 줄이 주어진다. 번째 줄은 번 식당을 나타내고, 공백으로 구분된 개의 정수 , , , , 로 이루어진다. 는 그 식당의 위치다.
제한
- 모든 에 대해
- 모든 에 대해
출력
정수 하나를 출력한다. 는 라시드가 고를 수 있는 최적 식당 투어의 최소 총 이동 시간이다. 가능한 투어가 없으면 을 출력한다.