显示代码纯文本
#include<bits/stdc++.h>
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,maa=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(maa<k[1]+k[2]+k[3])maa=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 main(){
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",maa);
return 0;
}