记录编号 410931 评测结果 AAAAAAAAAA
题目名称 [BYVoid S1] 灵魂分流药剂 最终得分 100
用户昵称 GravatarMenamovic 是否通过 通过
代码语言 C++ 运行时间 0.025 s
提交时间 2017-06-02 22:15:51 内存使用 0.36 MiB
显示代码纯文本
#include<cstdio>
#include<vector>

using namespace std;

const int maxn=110,maxm=11;
int n,m,a,b;
vector<int> K[maxm];
int costa[maxn],costb[maxn],belong[maxn],fff[maxn];
int f[maxn][maxn];
int drug[maxn][4];
int ans=-1,temp,num;

inline void in()
{
	freopen("soultap.in","r",stdin);
	freopen("soultap.out","w",stdout);
	scanf("%d%d%d%d",&n,&m,&a,&b);
	for(int i=1;i<=n;i++)
	{
		scanf("%d%d%d%d",&drug[i][1],&drug[i][2],&drug[i][3],&drug[i][4]);
		K[drug[i][3]].push_back(i);
	}
}

inline void dp()
{
	for(int k=1;k<=m;k++)
	{
		for(int v1=b;v1>=0;v1--)
		{
			for(int v2=a;v2>=0;v2--)
			{
				for(int i=0;i<K[k].size();i++)
				{
					num=K[k][i];
					if(v1<drug[num][1]||v2<drug[num][2]) continue;
					int &x=f[v1][v2];
					int y=f[v1-drug[num][1]][v2-drug[num][2]]+drug[num][4];
					if(y>x) x=y;
				}
			}
		}
	}
}

inline void p()
{
	printf("%d",f[a][b]);
}

int main()
{
	in();
	dp();
	p();
	return 0;
}