#include #include #include #include using namespace std; #define MAX_INT (1 << 30); int c1,c2,c3; int l1,l2,l3; int distances[10001]; int cost[10001]; int n; inline int solvecost(int dist) { if(0 < dist && dist <= l1) return c1; if(l1 < dist && dist <= l2) return c2; if(l2 < dist && dist <= l3) return c3; return -1; } int main(void) { cin >> l1 >> l2 >> l3 >> c1 >> c2 >> c3; int from; int to; int temp; cin >> n; cin >> from >> to; if(from > to ){temp = to; to = from; from = temp;} to = to - 1; from = from - 1; //cout << "ultra1" << endl; int i; int prev = 0; for(i = 0 ; i < n-1 ; i ++){ int dididi; cin >> dididi; distances[i] = dididi-prev; prev = dididi; } for(i = 0 ; i < n ; i ++){ cost[i] = MAX_INT; } // cout << from << endl; cost[from] = 0; int dist; //cout << "ultra" << endl; for(i = from ; i < to; i ++){ dist = 0; for(int t = i + 1 ; t <= to ; t ++){ dist += distances[t-1]; int solcos = solvecost(dist); if(solcos != -1){ int ultracost = cost[i] + solcos; if(ultracost < cost[t]) cost[t] = ultracost; }else{ break; } } } cout << cost[to]; }