Untitled

mail@pastecode.io avatarunknown
plain_text
a month ago
1.3 kB
2
Indexable
Never
#include<iostream>
using namespace std;
const int MaxL = 55;
int TC, N, L[3], P[3], Ai[MaxL], Di[MaxL], mint, maxt, ti[3], maxc;
int hv[6][3] = {{0, 1, 2},{0, 2, 1},{1, 0, 2},{1, 2, 0},{2, 0, 1},{2, 1, 0}};

int getSc(int id) {
	int sum = 0;
	for(int i = 0; i < N; i++) {
		int maxs = 0;
		for(int j = 0; j < 3; j++) {
			if(Ai[i] <= ti[j] && Ai[i] + Di[i] >= ti[j] + L[hv[id][j]])
				if(P[hv[id][j]] > maxs) maxs = P[hv[id][j]];
		}
		sum += maxs;
	}
	return sum;
}

void doing(int k, int id) {
	if(k == 3) {
		int c = getSc(id);
		if(c > maxc) maxc = c;
		return;
	}
	int st = mint, en = 50;
	if(k != 0) st = ti[k - 1] + L[hv[id][k - 1]];
	/*for(int i = k; i < 3; i++) en -= L[hv[id][i]];*/
	for(int i = st; i <= en; i++) {
		ti[k] = i;
		doing(k + 1, id);
		ti[k] = 0;
	}
}

int main() {
	/*freopen("input.txt", "r", stdin);*/
	cin >> TC;
	for(int tc = 0; tc < TC; tc++) {
		cin >> N;
		fill_n(ti, 3, 0);
		mint = 2147483647, maxt = 0, maxc = 0;
		for(int i = 0; i < 3; i++) cin >> L[i];
		for(int i = 0; i < 3; i++) cin >> P[i];
		for(int i = 0; i < N; i++) {
			cin >> Ai[i] >> Di[i];
			if(Ai[i] < mint) mint = Ai[i];
			if(Ai[i] + Di[i] > maxt) maxt = Ai[i] + Di[i];
		}
		for(int i = 0; i < 6; i++) doing(0, i);
		cout << "Case #" << tc + 1 << endl << maxc << endl;
	};
	return 0;
}