Cod sursa(job #1426610)

Utilizator isav_costinVlad Costin Andrei isav_costin Data 30 aprilie 2015 00:01:21
Problema Energii Scor 25
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.97 kb
#include <stdio.h>
#define gmax 5005
#define MAX 999999999
using namespace std;
int v[gmax], c[gmax], e[gmax];
int main()
{
    freopen( "energii.in", "r", stdin );
    freopen( "energii.out", "w", stdout );
    int i, j, g, w, min=MAX, dr=0;
    scanf( "%d%d", &g, &w );
    for( i=1; i<=g; i++ )
        scanf( "%d%d", &e[i], &c[i] );
    for( i=1; i<=w; i++ )
        v[i]=-1;
    for( i=1; i<=g; i++ )
    {
        for( j=dr; j>=0; j-- )
            if( v[j]!=-1 )
            {
                if( e[i]+j>=w )
                {
                    if( v[j]+c[i]<min )
                        min=v[j]+c[i];
                }
                else
              if( v[e[i]+j]==-1 || v[j]+c[i]<c[e[i]+j] )
                    v[e[i]+j]=v[j]+c[i];
            }
        if( e[i]+dr>=w )
            dr=w-1;
        else
            dr=dr+e[i];
    }
    if( min==MAX )
        printf( "-1" );
    else
        printf( "%d", min );
    return 0;
}