Cod sursa(job #487468)

Utilizator bogfodorBogdan Fodor bogfodor Data 25 septembrie 2010 12:14:24
Problema Energii Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.87 kb
#include <stdio.h>
#include <algorithm>
#define cv 100000
#define oo 0x3f3f3f

using namespace std;

int g,w;
int eg[cv],cg[cv],sol[cv],viz[cv];


void citire(){
    scanf("%d\n%d", &g, &w );
    for(int i=0;i<g;i++){
        scanf("%d %d\n", &eg[i], &cg[i]);
    }
}

int ceva(){
    for(int i=1;i<=2*w;i++)
        sol[i]=oo;
    viz[0]=1;
    for(int i=0;i<g;i++)
        for(int j=w;j>=0;j--){
            if(viz[j]==1){
                sol[j+eg[i]]=min(sol[j+eg[i]],sol[j]+cg[i]);
                viz[j+eg[i]]=1;
            }
        }
        int m=oo;
    for(int i=w;i<w*2;i++)
        if(viz[i]==1){
            m=min(sol[i],m);
            }
    if(m==oo)
    return -1;
    return m;
}

int main()
{
    freopen("energii.in","r",stdin);
    freopen("energii.out","w",stdout);
    citire();
    printf("%d",ceva());
    return 0;
}