记录编号 353632 评测结果 AAAAAAAAAA
题目名称 2077.[SYOI 2015] Asm.Def的枪榴弹 最终得分 100
用户昵称 AAAAAAAAAA 是否通过 通过
代码语言 C++ 运行时间 0.000 s
提交时间 2016-11-18 12:08:02 内存使用 0.00 MiB
显示代码纯文本
#include<cstdio>
using namespace std;
namespace IO{
	char buf[1<<15],*fs,*ft;
	inline char gc(){return (fs==ft&&(ft=(fs=buf)+fread(buf,1,1<<15,stdin),fs==ft))? 0:*fs++;}
	inline int qr(){
		int x=0;char c=gc();
		while(c<'0'||c>'9'){
			c=gc();}
		while(c>='0'&&c<='9'){
			x=(x<<1)+(x<<3)+c-'0';
			c=gc();}
		return x;}
}using namespace IO;
//==================================designed by AAAAAAAAAA===============================================//
int a[100],b[100],q[100],w[100],e[100],k[4],n,max=0;
int judge(int room){
	int t[4];		
	t[1]=k[1];t[2]=k[2];t[3]=k[3];
	if(a[room]<=t[1])
		t[1]-=a[room];
	else if(a[room]<=t[1]+t[3])
		 {t[3]-=a[room]-t[1];t[1]=0;}
	if(b[room]<=t[2])
		t[2]-=b[room];
	else if(b[room]<=t[2]+t[3]){
			t[3]-=b[room]-t[2];
			t[2]=0;}
	if(t[1]>=0&&t[2]>=0&&t[3]>=0)return 1;
	return 0;}
void dfs(int i)
{
	int t[4];		
	t[1]=k[1];t[2]=k[2];t[3]=k[3];
	if(max<k[1]+k[2]+k[3])max=k[1]+k[2]+k[3];
	if(i>n){
		return;}
	if(judge(i)){
		if(a[i]<=k[1])k[1]-=a[i];
		else {k[3]-=a[i]-k[1];k[1]=0;}
		if(b[i]<=k[2])k[2]-=b[i];
		else {k[3]-=b[i]-k[2];k[2]=0;}
		k[1]+=q[i];k[2]+=w[i];k[3]+=e[i];
		dfs(i+1);
		k[1]=t[1];k[2]=t[2];k[3]=t[3];}
	dfs(i+1);
}
int sb(){
	freopen ("asm_grenade.in","r",stdin);
	freopen ("asm_grenade.out","w",stdout);
	n=qr();
	for(int i=1;i<=n;i++){
		a[i]=qr();}
	for(int i=1;i<=n;i++){
		b[i]=qr();}
	for(int i=1;i<=n;i++){
		q[i]=qr();}
	for(int i=1;i<=n;i++){
		w[i]=qr();}
	for(int i=1;i<=n;i++){
		e[i]=qr();}
	for(int i=1;i<=3;i++){
		k[i]=qr();}
	dfs(1);
	printf("%d",max);
	return 0;
}
int chh=sb();
int main(){
	return 0;
}