Cod sursa(job #1877703)

Utilizator cosmin_candreaCosmin Candrea cosmin_candrea Data 13 februarie 2017 18:00:53
Problema Energii Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.3 kb
#include<fstream.h>
 
ifstream fin("energii.in");
ofstream fout("energii.out");
long c[1001] , e[1001];
#define INF 6000000
 
long a[1001][5001] , i , j ,w,g;
 
int main()
{
    fin>>g;
    fin>>w;
    for (i = 1 ; i<= g ; i++)
        fin>> e[i]>>c[i];
         
         
    for (i = 1 ; i<= w;i++)
    {
        if(i <= e[1])
        {
             a[1][i] = c[1];
        }    
    }
    for (i = 1 ; i<= g;i++)
    {
        for (j = 1 ; j<= w ; j++)
        {
            if (!a[i][j]) a[i][j] = INF;
             
        }
       
    }
    for (i = 2 ; i<= g ; i++)
    {
        for (j = 1 ; j<= w;j++)
        {
            if (j<= e[i])
            {
                    if (a[i-1][j] < c[i])
                       a[i][j] = a[i-1][j];
                    else
                       a[i][j] = c[i];
            }
            else
            {       
                        
                    if ( (j-e[i]>=1)&&a[i-1][j] > c[i] + a[i-1][j-e[i]] )   
                       a[i][j] = c[i] + a[i-1][j-e[i]];
                    else
                       a[i][j] = a[i-1][j];
            }
        }
    }
     
    if (a[g][w]==INF)
       fout<<-1;
    else
        fout<<a[g][w];            
             
     
     
         
    return 0;
}