Cod sursa(job #1494043)

Utilizator kasperDorin Puscasu kasper Data 30 septembrie 2015 16:29:30
Problema Energii Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.02 kb
#include<fstream>
#define MaxN 1001
#define MaxS 5001

using namespace std;
 
 ifstream fin("energii.in");
 ofstream fout("energii.out");
int   n, s, a[MaxN], cost[MaxN];
int   c[MaxS];
int   minn = 999999999;

 
void citire()
{
    
 
    fin >> n >> s;
    for (int k=1; k<=n; ++k)
        fin >> a[k] >> cost[k];
 
}

 
int main()
{
    int i, j, k;
 
    citire();
 
    for (j=1; j<=s; ++j)
	 c[j] = 1e9;
     c[0] = 0;
 
    for (i=1; i<=n; ++i)
        for (j=s; j>=0; --j)
            if (c[j] < 1e9)
            {
                if (j + a[i] > s)
                    if (minn > c[j] + cost[i])
                        minn = c[j] + cost[i];
                if (j + a[i] <= s)
                    if (c[j + a[i]] > c[j] + cost[i])
                        c[j + a[i]] = c[j] + cost[i];
            }
     
	 
 
    if (c[s] == 1e9 && minn == 999999999)
        fout << -1;
    else
        fout << (minn < c[s] ? minn : (c[s] == -1 ? minn : c[s]));
    return 0;
}