Run ID | 作者 | 问题 | 语言 | 测评结果 | 分数 | 时间 | 内存 | 代码长度 | 提交时间 |
---|---|---|---|---|---|---|---|---|---|
24587 | baka24 | 【BJ】T1 | C++ | 运行超时 | 55 | 1000 MS | 436 KB | 1051 | 2024-01-04 15:35:11 |
#include<bits/stdc++.h> using namespace std; #define int long long const int MAXN=100010,ie18=1000000000000000000; int n,m,a[MAXN],s[MAXN],c[MAXN],cs[MAXN],p[MAXN],ans; void dfs(int now,int mn){ if(now==n+1){ int sum=0; for(int i=n;i>=1;i--){ if(cs[i]){ p[a[i]]++; sum-=s[i]; } } for(int i=1;i<=n+m;i++){ if(p[i]){ sum+=p[i]*c[i]; p[i+1]+=p[i]>>1; p[i]=0; } } if(sum>ans){ ans=sum; } return; } if(a[now]<=mn){ cs[now]=1; dfs(now+1,a[now]); } cs[now]=0; dfs(now+1,mn); } signed main(){ scanf("%lld%lld",&n,&m); for(int i=1;i<=n;i++){ scanf("%lld",&a[i]); } for(int i=1;i<=n;i++){ scanf("%lld",&s[i]); } for(int i=1;i<=n+m;i++){ scanf("%lld",&c[i]); } dfs(1,ie18); printf("%lld",ans); return 0; }