Cod sursa(job #1083608)

Utilizator AdrianaMAdriana Moisil AdrianaM Data 16 ianuarie 2014 09:19:07
Problema Energii Scor 10
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.9 kb
#include <fstream>
#include <cstring>
#define INF 0x3f3f3f3f
using namespace std;

ifstream is("energii.in");
ofstream os("energii.out");

int n, s;
long long suma, min1;
int p[1001], c[1001];
long long q[15005];

int main()
{
    is >> n >> s;
    for ( int i = 1; i <= n; ++i )
        is >> p[i] >> c[i];
    for ( int i = 1; i <= 15005; ++i )
        q[i] = INF;
    for ( int i = 1; i <= n; ++i )
    {
        for ( int j = suma; j > -1; --j )
            if ( q[j] != INF && q[j] + c[i] < q[j + p[i]] )
                q[j + p[i]] = q[j] + c[i];
        suma += p[i];
    }
    int i;
    min1 = 0x3f3f3f3f;
    for ( i = s; i <= suma; ++i )
        if ( q[i] != -1 )
        {
            if ( q[i] < min1 )
                min1 = q[i];
        }
    if ( min1 == 0x3f3f3f3f )
        os << "-1";
    else
        os << min1;
    is.close();
    os.close();
    return 0;
}