Cod sursa(job #902909)

Utilizator adascaluAlexandru Dascalu adascalu Data 1 martie 2013 17:25:31
Problema Energii Scor 90
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.88 kb
#include <cstdio>
#include<algorithm>
#include<vector>
#define INF 1000000000
#define nmax 1001
#define Wmax 5000
using namespace std;

FILE*f=fopen("energii.in","r");
FILE* g=fopen("energii.out","w");
vector <int> D(10001);
int n,w;
int total_power;
void knapsack();

int main()
{
    fscanf(f,"%d %d",&n,&w);
    knapsack();
    fclose(f);
    fclose(g);
    return 0;
}
void  knapsack()
{

    int current,j,power,cost;
    D[0]=-1;
    for(current=1;current<=n;++current)
    {
        fscanf(f,"%d%d",&power,&cost);
        for(j=w;j>=0;--j)
            if(D[j])
                if(!D[j+power] || D[j]+cost<D[j+power])
                    D[j+power]=D[j]+cost;
    }
    int min=INF;

    for(j=w;j<=10001;++j)
        if(D[j] &&D[j]<min)
            min=D[j];
    if(min==INF)
        fprintf(g,"%d",-1);
    else
        fprintf(g,"%d",min+1);
}