Pagini recente » Cod sursa (job #1226427) | Cod sursa (job #1635912) | Cod sursa (job #2600375) | Cod sursa (job #1501362) | Cod sursa (job #754054)
Cod sursa(job #754054)
#include<stdio.h>
#define INF 500000000
int v[10001],n,g;
FILE *fin,*fout;
void adauga(int w,int p)
{
for(int i=g-1;i>=0;i--)
{
if(v[i]==INF)
continue;
if(i+w>g)
continue;
if(v[i]+p>v[i+w] || v[i+w]==INF)
v[i+w]=v[i]+p;
}
}
void initializare()
{
for(int i=1;i<=g;i++)
v[i]=INF;
}
void citire()
{
int p,w;
fin=fopen("rucsac.in","r");
fscanf(fin,"%d %d",&n,&g);
initializare();
for(int i=1;i<=n;i++)
{
fscanf(fin,"%d %d",&w,&p);
adauga(w,p);
}
fclose(fin);
}
void afisare()
{
int max=0;
fout=fopen("rucsac.out","w");
for(int i=1;i<=g;i++)
{
if(v[i]!=INF && v[i]>max)
max=v[i];
}
fprintf(fout,"%d",max);
fclose(fout);
}
int main()
{
initializare();
citire();
afisare();
return 0;
}