Cod sursa(job #1554869)

Utilizator JibrilCernea Bernard Silvestru Jibril Data 21 decembrie 2015 21:17:11
Problema Energii Scor 40
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.73 kb
#include <cstdio>

using namespace std;
int cant[10000005], eng[1002], pret[1002];
int main()
{
    int i, j, g, w, min, max;
    freopen("energii.in", "r", stdin);
    freopen("energii.out", "w", stdout);
    scanf("%d%d", &g, &w);
    for(i=0; i<g; i++)
        scanf("%d%d", &eng[i], &pret[i]);

    cant[0]=1;
    max=0;
    min=100000000;
    for(i=0; i<g; i++){
        for(j=max; j>=0; j--){
            if(cant[j] && (cant[j+eng[i]]>pret[i]+cant[j] || cant[j+eng[i]]==0)){
                cant[j+eng[i]]=pret[i]+cant[j];
                if(max<j+eng[i]) max=j+eng[i];
                if(j+eng[i]>=w && cant[j+eng[i]]<min) min=cant[j+eng[i]];
            }
        }
    }
    printf("%d", min-1);
    return 0;
}