Cod sursa(job #878234)

Utilizator BlackLordFMI Alex Oprea BlackLord Data 14 februarie 2013 10:31:04
Problema Energii Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.77 kb
#include <fstream>
#include <string.h>
#include <algorithm>
#define INF (1 + (1<<8) + (1<<16) + (1<<24))
using namespace std;
ifstream f("energii.in");
ofstream g("energii.out");
int n, w, d[10010], e[1010], c[1010], i, j;
int main(){
    memset(d, 1, sizeof(d));
    f>>n>>w;
    for(i=1; i<=n; i++)
        f>>e[i]>>c[i];
    f.close();
    d[0]=0;
    for(i=1; i<=n; i++)
    {
        for(j=w; j>=0; j--)
        {
            if(d[j]!=INF)
            {
                if(j+e[i]<=w)
                    d[j+e[i]]=min( d[j]+c[i], d[ j+e[i] ] );
                else
                    d[w]=min( d[w], d[j]+c[i] );
            }
        }
    }
    if(d[w]!=INF)
        g<<d[w];
    else
        g<<"-1";
    g<<"\n";
    g.close();
    return 0;
}