Cod sursa(job #1698894)

Utilizator Vlad_lsc2008Lungu Vlad Vlad_lsc2008 Data 5 mai 2016 17:20:09
Problema Energii Scor 5
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.82 kb
#include <iostream>
#include <cstdio>
using namespace std;

int n,w,g=10005;
int p[1005],c[1005];
int sol[5005];

int main()
{
    int i,j,mini=1000000,stot=0;
    freopen("energii.in","r",stdin);
    freopen("energii.out","w",stdout);
    scanf("%d%d",&n,&w);
    for(i=1;i<=n;i++)
    {
        scanf("%d%d",&p[i],&c[i]);
        stot+=p[i];
    }
    if(stot<w)
    {
        printf("-1"); return 0;
    }
    for(i=1;i<=w;i++) sol[i]=0x7ffffff;
    for(i=1;i<=n;i++)
    {
        for(j=w;j>=1;j--)
        {
            if(j<p[i] && c[i]<sol[i]) sol[i]=c[i];
            if(j>=p[i] && sol[j-p[i]]+c[i]<sol[j] ) sol[j]=sol[ j-p[i] ]+c[i];
        }
          //  for(j=1;j<=18;j++) cout<<sol[j]<<' '; cout<<'\n';
    }
    printf("%d\n",sol[w]);
    fclose(stdin);
    fclose(stdout);
    return 0;
}