记录编号 26537 评测结果 AWATTTTTTT
题目名称 准备工作 最终得分 20
用户昵称 GravatarPom 是否通过 未通过
代码语言 C++ 运行时间 7.028 s
提交时间 2011-07-25 09:35:28 内存使用 0.31 MiB
显示代码纯文本
#include <iostream>
#include <cstdlib>
#include <cstring>
#include <cstdio>
#include <cmath>

using namespace std;

const int MAXN=103;

struct team
{
	int p,r,d;
}a[MAXN];

int n,m,ans,i,j,k;
bool used[MAXN];

void dfs(int dep,int now,int tim)
{
	if (now>=ans) return;
	if (dep==n+1)
	{
		ans=now;
		return;
	}
	int ti;
	for (int i=1;i<=n;i++)
		if (!used[i])
		{
			used[i]=true;
			ti=max(tim,a[i].r)+a[i].p;
			dfs(dep+1,max(now,ti-a[i].d),ti);
			used[i]=false;
		}
}

inline int cmp(const void *p,const void *q)
{
	return *((int *)p)-*((int *)q);
}

int main()
{
	freopen("preparation.in","r",stdin);
	freopen("preparation.out","w",stdout);
	for (;;)
	{
		scanf("%d",&n);
		if (n==0) break;
		for (i=1;i<=n;i++)
			scanf("%d",&a[i].p);
		for (i=1;i<=n;i++)
			scanf("%d",&a[i].r);
		for (i=1;i<=n;i++)
			scanf("%d",&a[i].d);
		qsort(a+1,n,sizeof(team),cmp);
		memset(used,false,sizeof(used));
		ans=1000000;
		dfs(1,0,0);
		printf("%d\n",ans);
	}
	return 0;
}