Pagini recente » Cod sursa (job #1059791) | Cod sursa (job #156819) | Cod sursa (job #383853) | Cod sursa (job #3149166) | Cod sursa (job #62488)
Cod sursa(job #62488)
#include<fstream.h>
#define NMax 10001
#define MaxG 10001
int n,GMax;
int c[NMax],g[NMax];
int CMax[MaxG],Uz[1000][1000];
void Citire();
void Rezolvare();
void Afisare();
int main()
{
Citire();
Rezolvare();
Afisare();
return 0;
}
void Citire()
{
ifstream fin("energii.in");
int i;
fin>>n>>GMax;
for(i=1;i<=n;i++)
fin>>g[i]>>c[i];
fin.close();
}
void Rezolvare()
{
int S,k,i;
for(S=1;S<=GMax;S++)
CMax[S]=-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])
if(CMax[S]<c[i]+CMax[S-g[i]])
{
CMax[S]=c[i]+CMax[S-g[i]];
for(k=1;k<=n;k++)
Uz[S][k]=Uz[S-g[i]][k];
Uz[S][i]=1;
}
}
void Afisare()
{
ofstream fout("energii.out");
fout<<CMax[GMax]<<"\n";
// for(int k=1;k<=n;k++)
// if(Uz[GMax][k])
// fout<<k<<" ";
fout.close();
}