Untitled
unknown
plain_text
2 years ago
1.3 kB
10
Indexable
#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;
}Editor is loading...