Untitled
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; }