Cod sursa(job #547949)
#include<fstream>
using namespace std;
int n,gmax,k,c[101],g[101],uz[301][101],cmax[301],s,i,j;
int main()
{
ifstream f("energii.in");
ofstream g1("energii.out");
f>>n>>gmax;
for(i=1;i<=n;i++)
{
f>>g[i];
f>>c[i];
}
for(i=1;i<=gmax;i++)
cmax[i]=-1;
for(s=1;s<=gmax;s++)
for(i=1;i<=n;i++)
if(g[i]<=s&&cmax[s-g[i]]!=-1&&uz[s-g[i]][i]==0)
if(cmax[s]<cmax[s-g[i]]+c[i])
{
cmax[s]=cmax[s-g[i]]+c[i];
for(j=1;j<=n;j++)
uz[s][j]=uz[s-g[i]][j];
uz[s][i]=1;
}
if(cmax[gmax]==-1)
g1<<"Imposibil";
else
g1<<cmax[gmax]<<"\n";
/* for(i=1;i<=n;i++)
if(uz[gmax][i])
g1<<i<<" ";*/
return 0;
}