Cod sursa(job #487459)

Utilizator Sm3USmeu Rares Sm3U Data 25 septembrie 2010 12:11:50
Problema Energii Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1 kb
#include <cstdio>
#include <string.h>
#include <algorithm>
#define inf 100030
using namespace std;


int g;
int w;
int e[inf];
int c[inf];
int sol[inf];
int viz[inf];


void citire()
{
    scanf("%d %d", &g, &w);
    for(int i=0;i<g;i++)
        scanf("%d %d",&e[i],&c[i]);

    for(int i=1;i<2*w;i++)
        sol[i]=335546;
    viz[0]=1;
    sol[0]=0;

}

void afisare()
{
    int min=99999;
        for(int i=w;i<2*w;i++)
        if(viz[i]==1)
        {
            if(min>sol[i])
                min=sol[i];
        }
    if(min!=99999)
    {
        printf("%d",min);
        return;
    }

        printf("-1");
}

int main()
{
    freopen("energii.in","r",stdin);
    freopen("energii.out","w",stdout);

    citire();
    for(int i=0;i<g;i++)
        for(int j=w;j>=0;j--)
            if(viz[j]==1)
            {
                sol[j+e[i]]= min ( sol[j+e[i]],sol[j] + c[i]);
                viz[j+e[i]]=1;
            }
    afisare();


    return 0;
}