Cod sursa(job #1852635)

Utilizator tifui.alexandruTifui Ioan Alexandru tifui.alexandru Data 20 ianuarie 2017 23:47:32
Problema Problema rucsacului Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.7 kb
#include <iostream>
#include <fstream>
#include <cmath>
using namespace std;
ifstream f("rucsac.in");
ofstream g("rucsac.out");
int v[5001];
int p[5001];
int best,DIM,V;
void conv(int n)
{
    int nr=0,i=DIM;
    while(n)
    {
        nr=nr*10+n%2;
        if(nr==0) i--;
        n/=2;
    }
    int s1=0,s2=0;
    while(nr)
    {
        if(nr%2)
        {
            s1+=v[i];
            s2+=p[i];
            if(s1>V) return;
        }
        i--;
        nr/=10;
    }
    if(s2>best) best=s2;
}
int main()
{int n,i;
f>>DIM>>V;
n=DIM;
for(i=1;i<=n;i++)
    f>>v[i]>>p[i];
long long N=pow(2,n);
for(i=1;i<=N;i++)
    conv(i);
g<<best;

    return 0;
}
//10-20 pct