比赛 |
Asm.Def战记之圣地亚哥“杯2015 |
评测结果 |
AAAAAATTTT |
题目名称 |
Asm.Def的枪榴弹 |
最终得分 |
60 |
用户昵称 |
Tychus |
运行时间 |
4.351 s |
代码语言 |
C++ |
内存使用 |
0.31 MiB |
提交时间 |
2015-10-31 11:33:21 |
显示代码纯文本
#include <iostream>
#include <cstring>
#include <algorithm>
#include <cstdio>
#include <string>
#include <cmath>
#include <iomanip>
using namespace std;
struct room
{
int a,b,c,d,e,w;
}x[20];
int n,k1,k2,k3,ans=0;
bool f[20];
void dfs()
{
int sum1=k1,sum2=k2,sum3=k3;
if (k1+k2+k3>ans) ans=k1+k2+k3;
for (int i=1;i<=n;i++)
if (!f[i]&&max(x[i].a-k1,0)+max(x[i].b-k2,0)<=k3)
{
f[i]=1;
k3+=x[i].e-max(x[i].a-k1,0)-max(x[i].b-k2,0);
k1=max(k1-x[i].a,0)+x[i].c;
k2=max(k2-x[i].b,0)+x[i].d;
dfs();
f[i]=0;
k1=sum1;
k2=sum2;
k3=sum3;
}
}
int main()
{
freopen("asm_grenade.in","r",stdin);
freopen("asm_grenade.out","w",stdout);
cin>>n;
for (int i=1;i<=n;i++)
scanf("%d",&x[i].a);
for (int i=1;i<=n;i++)
scanf("%d",&x[i].b);
for (int i=1;i<=n;i++)
scanf("%d",&x[i].c);
for (int i=1;i<=n;i++)
scanf("%d",&x[i].d);
for (int i=1;i<=n;i++)
scanf("%d",&x[i].e);
cin>>k1>>k2>>k3;
dfs();
cout<<ans<<endl;
fclose(stdin);
fclose(stdout);
return 0;
}