Pagini recente » Cod sursa (job #2894223) | Cod sursa (job #296679) | Cod sursa (job #24750) | Cod sursa (job #814956) | Cod sursa (job #693877)
Cod sursa(job #693877)
#include<cstdio>
using namespace std;
short prfob[10001];
short grob[10001];
long long rucsac[2][10001];
long long maxim(long long a, long long b)
{
if(a>=b)
return a;
return b;
}
int main()
{
short i,j,l,n,gr;
long long pmax=0;
FILE* f;
f=fopen("rucsac.in","r");
fscanf(f,"%hd %hd\n",&n,&gr);
for(i=1;i<=n;i++)
fscanf(f,"%hd %hd\n",&grob[i],&prfob[i]);
fclose(f);
l=1;
for(i=1;i<=n;i++)
{
l=1-l;
for(j=0;j<=gr;j++)
{
if(j>=grob[i])
rucsac[l][j]=maxim(rucsac[1-l][j],(rucsac[1-l][j-grob[i]]+prfob[i]));
else
rucsac[l][j]=rucsac[1-l][j];
}
}
for(j=0;j<=gr;j++)
if(rucsac[l][j]>pmax)
pmax=rucsac[l][j];
FILE* g;
g=fopen("rucsac.out","w");
fprintf(g,"%lld\n",pmax);
fclose(g);
return 0;
}
/*varianta cu fstream care nu functioneaza
#include<fstream>
using namespace std;
short prfob[10001];
short grob[10001];
long long rucsac[2][10001];
long long maxim(long long a, long long b)
{
if(a>=b)
return a;
return b;
}
int main()
{
short i,j,l,n,gr,pmax=0;
ifstream f("rucsac.in");
f>>n>>gr;
for(i=1;i<=n;i++)
f>>grob[i]>>prfob[i];
f.close();
l=1;
for(i=1;i<=n;i++)
{
l=1-l;
for(j=0;j<=gr;j++)
{
if(j>=grob[i])
rucsac[l][j]=maxim(rucsac[1-l][j],(rucsac[1-l][j-grob[i]]+prfob[i]));
else
rucsac[l][j]=rucsac[1-l][j];
}
}
for(j=0;j<=gr;j++)
if(rucsac[l][j]>pmax)
pmax=rucsac[l][j];
ofstream g("rucsac.out");
g<<pmax<<'\n';
g.close();
return 0;
}
*/