Untitled

 avatar
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