Cod sursa(job #1147313)

Utilizator span7aRazvan span7a Data 19 martie 2014 18:50:15
Problema Energii Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.77 kb
#include<cstdio>
#include<algorithm>
#define M 2000000000
using namespace std;
FILE *f=fopen("energii.in","r");
FILE *g=fopen("energii.out","w");
int a[5002],b[5002],C[1002],En[1002],W,G;
void copie()
{
    for(int i=1;i<=W;i++)
        a[i]=b[i];

}
void solve()
{
    int i,j;
    for(i=1;i<=G;i++)
    {
        for(j=1;j<=W;j++)
            if(j<=En[i])
                b[j]=min(a[j],C[i]);
            else
                b[j]=min(a[j],a[j-En[i]]+C[i]);
        copie();
    }
    if(b[W]==M)
        fprintf(g,"-1");
    else
    fprintf(g,"%d",b[W]);
}
int main()
{
    int i;
    fscanf(f,"%d%d",&G,&W);
    for(i=1;i<=W;i++)
        a[i]=b[i]=M;
    for(i=1;i<=G;i++)
        fscanf(f,"%d%d",&En[i],&C[i]);
    solve();
    return 0;
}