Cod sursa(job #443959)
#include<stdio.h>
#define N 200
int main()
{
FILE *f,*g;
f=fopen("gutui.in","r");
g=fopen("gutui.out","w");
int n,i,j,s,k,h,u,he[N],c[N],hmax[N],uz[N][N];
fscanf(f,"%d%d%d",&n,&h,&u);
for(i=1;i<=n;i++)
fscanf(f,"%d%d",&he[i],&c[i]);
for(i=1;i<=h;i++)
hmax[i]=-1;
for(i=0;i<=h;i++)
for(j=0;j<=h;j++)
uz[i][j]=0;
for(s=1;s<=h;s++)
for(i=1;i<=n;i++)
if(he[i]<=s && hmax[s-he[i]]!=-1 && !uz[s-he[i]][i])
if(hmax[s]<c[i]+hmax[s-he[i]])
{
hmax[s]=c[i]+hmax[s-he[i]];
for(j=1;j<=n;j++)
he[j]+=u;
for(k=1;k<=n;k++)
uz[s][k]=uz[s-he[i]][k];
uz[s][i]=1;
}
/*for(i=1;i<h;i++)
fprintf(g,"%d ",hmax[i]);*/
fprintf(g,"%d\n",hmax[h]);
return 0;
}