Cod sursa(job #1087580)

Utilizator titusuTitus C titusu Data 19 ianuarie 2014 16:42:11
Problema Energii Scor 95
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.93 kb
#include <iostream>
#include <fstream>

using namespace std;

ifstream fin("energii.in");
ofstream fout("energii.out");
int pret[5010],putere[5010];

int n,puterenecesara,putererespectiva,pretulminim;

void knapsack(){
    int cc[5010] , cp[5010];
    cp[0] = 0;
    for(int i=1;i<=puterenecesara;i++)
        cp[i] = 1000000000;
    for(int i=1;i<=n;i++)
    {    
		cc[0] = 0;
		for(int j=1;j<=puterenecesara;j++)
        {
            cc[j] = cp[j];
            if(j <= putere[i] && cc[j]>pret[i])
				cc[j] = pret[i];
            if(j>=putere[i] && cc[j] > cp[j-putere[i]]+pret[i])
                cc[j] = cp[ j - putere[i] ] + pret[i];
        }
        for(int j = 0 ; j <= puterenecesara ; j++)
			cp[j]  = cc[j];
    }
    fout << cc[puterenecesara];
}

int main(){
    fin >> n;
    fin >> puterenecesara;
    for(int i=1 ; i <= n ; i++)
        fin >> putere[i] >> pret[i];
    knapsack();


return 0;
}