// UVa 10440 - Ferry Loading II
#include <stdio.h>
#include <string.h>
#include <algorithm>
using namespace std;
#define MaxM 2001
typedef unsigned long long ll;
ll a[MaxM];
ll T[MaxM];
int main() {
int cases;
for (scanf("%d", &cases); cases; cases--) {
int n, t, m;
scanf("%d%d%d", &n, &t, &m);
memset(T, 255, sizeof(T));
T[0] = 0;
for (int i = 1; i <= m; i++) {
scanf("%llu", &a[i]);
for (int j = max(0, i - n); j < i; j++) {
if (T[i] > max(a[i], T[j]) + 2 * t)
T[i] = max(a[i], T[j]) + 2 * t;
}
}
ll time = T[m] - 2 * t;
int trips = 0;
int i = m;
while (i > 0) {
trips++;
int j;
for (j = i; j > 0 && (j > i - n || a[j] >= time); j--)
;
i = j;
time -= 2 * t;
}
printf("%llu %d\n", T[m] - t, trips);
}
return 0;
}
Wednesday, May 13, 2015
UVa 10440 - Ferry Loading II
Subscribe to:
Post Comments (Atom)
This comment has been removed by the author.
ReplyDelete