Cod sursa(job #872045)

Utilizator isabela-oanceaOancea Maria Isabela isabela-oancea Data 5 februarie 2013 18:48:48
Problema Problema rucsacului Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.69 kb
#include<fstream>
using namespace std;
ifstream f("rucsac.in");
ofstream g("rucsac.out");
int n,g1,maxi,i,j,v[5001],gr[5001],a[10001];
int max(int x,int y)
{
    if(x>y)
        return x;
        return y;
}
int main()
{
f>>n>>g1;
for(i=1;i<=n;i++)
    f>>gr[i]>>v[i];
a[0]=1;
for(i=1;i<=n;++i)
    {if(maxi+gr[i]>g1)
        maxi=g1-gr[i];
    for(j=maxi;j>=0;--j)
        if(a[j])
        {if(j==0)
            a[j+gr[i]]=max(a[j+gr[i]],a[j]-1+v[i]);
        else
            a[j+gr[i]]=max(a[j+gr[i]],a[j]+v[i]);
		
	
		}
	maxi=maxi+gr[i];
    }

for(i=g1;i>=1;i--)
    if(a[i])
        {g<<a[i]<<'\n';
        break;
        }
f.close();
g.close();
return 0;
}