import java.io.IOException;
import java.io.FileReader;
import java.io.BufferedReader;
import java.util.Scanner;
import java.lang.Math;
class Main
{
public static final boolean DEBUG = false;
public static void main(String[] args) throws IOException
{
Scanner cin;
int l1, l2, l3, c1, c2, c3;
int a, b;
int n;
long[] dis;
long[] f;
if (DEBUG) {
cin = new Scanner(new BufferedReader(new FileReader("d:\\OJ\\uva_in.txt")));
} else {
cin = new Scanner(System.in);
}
while (cin.hasNext()) {
l1 = cin.nextInt();
l2 = cin.nextInt();
l3 = cin.nextInt();
c1 = cin.nextInt();
c2 = cin.nextInt();
c3 = cin.nextInt();
a = cin.nextInt();
b = cin.nextInt();
if (a > b) {
int tmp;
tmp = a;
a = b;
b = tmp;
}
n = cin.nextInt();
dis = new long[n + 1];
f = new long[n + 1];
for (int i = 2; i <= n; i++) {
dis[i] = cin.nextLong();
}
for (int i = b; i > a; i--) {
dis[i] -= dis[i - 1];
}
//System.out.println(Long.MAX_VALUE);
for (int i = a; i <= b; i++) f[i] = Long.MAX_VALUE / 2;
f[a] = 0;
for (int i = a + 1; i <= b; i++) {
long len = 0;
for (int j = i - 1; j >= a; j--) {
len += dis[j + 1];
if (len <= l1) {
f[i] = Math.min(f[i], f[j] + c1);
} else if (len <= l2) {
f[i] = Math.min(f[i], f[j] + c2);
} else if (len <= l3) {
f[i] = Math.min(f[i], f[j] + c3);
} else break;
}
}
System.out.println(f[b]);
}
}
}
题目1086:最小花费
最新推荐文章于 2019-07-05 21:57:00 发布