Cod sursa(job #1253055)

Utilizator cozmin97Gemene Cozmin cozmin97 Data 31 octombrie 2014 19:11:31
Problema Energii Scor 100
Compilator cpp Status done
Runda preoji_cl11_12_lspvs Marime 0.84 kb
#include <fstream>
#include <cstring>
#define min(a,b) (((a)<=(b))?(a):(b))
#define In "energii.in"
#define Out "energii.out"
#define Smax 5000
#define Inf 0x3f3f3f3f
using namespace std;
int n,S;
int best[Smax+2];
///best[i] = costul minim necesar formarii sumei i
int main()
{
    ifstream f(In);
    memset(best,Inf,sizeof(best));
    f>>n>>S;
    int i,j,e,c;
    for(i=1;i<=n;i++)
    {
        f>>e>>c;
        for(j=S+e;j>e;j--)//vrem sa construim suma j
            if(best[j-e]!=Inf)
            {
                if(j>S)
                    best[S] = min(best[S],best[j-e]+c);
                else
                    best[j] = min(best[j],best[j-e]+c);
            }
        best[e] = min(best[e],c);
    }
    f.close();
    ofstream g(Out);
    g<<(best[S]==Inf?(-1):best[S])<<"\n";
    g.close();
    return 0;
}