Untitled
unknown
plain_text
a year ago
1.4 kB
12
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