시간 제한 | 메모리 제한 | 제출 | 정답 | 맞힌 사람 | 정답 비율 |
---|---|---|---|---|---|
1.5 초 (하단 참고) | 512 MB | 167 | 56 | 44 | 34.646% |
Albert는 앞으로 n개의 숙제를 해야한다 (편의상 1번부터 n번까지 번호가 붙어있다).
현재 시각은 S 이고, i번째 숙제의 내용은 정해진 시각 t[i]에 공개 된다 (어떤 숙제는 이미 공개 되었지만 Albert가 아직 제출 하지 않았을 수 있다). 각 숙제별로 벌점이 있어서, 만약 Albert가 i번째 숙제를 제출한 시각이 y[i] 라면 (y[i] - t[i]) × v[i] 만큼의 벌점이 부여된다.
숙제는 어렵지 않아서 모든 숙제는 내용이 공개 되는 즉시 풀어서 제출할 수 있지만, 숙제를 하나 제출하고나면 반드시 최소한의 휴식을 취해야 한다. Albert가 취할 수 있는 최소한의 휴식은 "1 단위 시간" 이다 (필요하다면 더 많이 쉬는 것도 가능하다).
예를 들어 n = 5, S = 3, t = [1, 2, 3, 4, 5], 그리고 v = [8, 3, 2, 13, 3]이라 하자.
이 예제에서 두 번째 방법이 벌점을 최소화 하는 방법이다.
Albert가 모든 숙제를 다 제출하면서 달성 가능한 최소한의 벌점이 몇점인지 구해보자.
첫 줄에 테스트 케이스의 수 T가 주어진다.
각 테스트 케이스는 세 줄에 걸쳐 주어진다.
첫 줄에 두 정수 n과 S가 공백으로 구분되어 주어진다.
둘째 줄에 숙제가 언제 나오는지 나타내는 n개의 정수가 (t[1], ..., t[n]) 공백으로 구분되어 주어진다.
셋째 줄에 숙제의 벌점을 나타내는 n개의 정수가 (v[1], ..., v[n]) 공백으로 구분되어 주어진다.
각 테스트 케이스의 정답인 최소 벌점을 각 줄에 출력한다.
2 5 3 1 2 3 4 5 8 3 2 13 3 5 30 10 20 30 40 50 8 3 2 13 3
36 197
예제 1: 본문에서 다루었다.
예제 2: 숙제를 1-2-3-4-5 순서대로 하는 것이 최선이다.