Cod sursa(job #1281912)

Utilizator daniel.grosuDaniel Grosu daniel.grosu Data 3 decembrie 2014 20:30:31
Problema Energii Scor 5
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.81 kb
#include <fstream>
#define NMAX 1001
#define WMAX 10001
using namespace std;

ifstream fin("energii.in");
ofstream fout("energii.out");

int v[NMAX];
int w[NMAX];
int m[NMAX][WMAX];
int W,k;


int main(){

    fin>>k>>W;
    
    for(int i=1; i<=k; i++)
        fin>>v[i]>>w[i];
    int a;
    for(int i=1; i<=k; i++)
        a+=v[i];
    if(a<W){
        fout<<-1;
        return 0;
    }
    
    for(int j=0; j<=W; j++)
        m[0][j] = 0;
    
    for(int i=1; i<=k; i++)
        for(int j=0; j<=W+1; j++)
            if(w[i]<j)
            {
                if(m[i-1][j] > m[i-1][j-w[i]] + v[i])
                    m[i][j] = m[i-1][j];
                else
                    m[i][j] = m[i-1][j-w[i]] + v[i];
            }
    
    fout<<m[k][W+1];
    
    
    return 0;
}