Cod sursa(job #1698882)

Utilizator Vlad_lsc2008Lungu Vlad Vlad_lsc2008 Data 5 mai 2016 16:59:42
Problema Energii Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.8 kb
#include <iostream>
#include <cstdio>
using namespace std;

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

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<=n;i++)
    {
        for(j=g-c[i];j>=0;j--)
            {
                if(sol[j]+p[i]>sol[j+c[i]] ) sol[j+c[i]]=sol[j]+p[i];
                if(sol[j+c[i]]>=w && mini>j+c[i]) mini=j+c[i];
            }
            //for(j=1;j<=18;j++) cout<<sol[j]<<' '; cout<<'\n';
    }
    printf("%d\n",mini);
    fclose(stdin);
    fclose(stdout);
    return 0;
}