Untitled
unknown
plain_text
a year ago
1.4 kB
4
Indexable
#include<iostream> using namespace std; int t, n, ans; int timeAds[3], pointAds[3]; // thoi giam quang cao va so diem int visit[3], beginAds[3], endAds[3], cur_point[3]; int arrive[55], duration[55]; //thoi dian den va trong bao lau void nhap() { cin >> n; for (int i = 0; i < 3; i++) { cin >> timeAds[i]; } for (int i = 0; i < 3; i++) { cin >> pointAds[i]; } for (int i = 0; i < n; i++) { cin >> arrive[i] >> duration[i]; } } void sum(int k) { int sum = 0; for (int i = 0; i < n; i++) { int point = 0; for (int j = 0; j < k; j++) { if(arrive[i] <= beginAds[j] && arrive[i] + duration[i] >= endAds[j]) { if(cur_point[j] > point) { point = cur_point[j]; } } } sum += point; } if(sum > ans) ans = sum; } void backtrack(int time, int k) { if(time > 50 || k == 3) { sum(k); return; } backtrack(time + 1, k); for (int i = 0; i < 3; i++) { if(!visit[i]) { visit[i] = 1; beginAds[k] = time; endAds[k] = time + timeAds[i]; cur_point[k] = pointAds[i]; backtrack(endAds[k], k + 1); visit[i] = 0; } } } int main() { cin >> t; for (int tc = 1; tc <= t; tc++) { nhap(); ans = 0; backtrack(1, 0); cout << "Case #" << tc << endl; cout << ans << endl; } return 0; }
Editor is loading...
Leave a Comment