Cod sursa(job #1722066)

Utilizator Ruxandra985Nanu Ruxandra Laura Ruxandra985 Data 27 iunie 2016 10:54:55
Problema Energii Scor 55
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.76 kb
#include <cstdio>
#include <algorithm>
#include <iostream>
#define INF 1000000000

using namespace std;
int d[10001];
int main()
{
    FILE *fin=fopen ("energii.in","r");
    FILE *fout=fopen ("energii.out","w");
    int n,k,s=0,x,y,j,sol=INF;
    fscanf (fin, "%d%d", &n, &k);
    for (int i=1;i<=10000;i++)
        d[i]=INF;
    for (int i=1;i<=n;i++){
        fscanf (fin,"%d%d",&x,&y);
        s+=y;
        for (j=min(s,10000);j>=x;j--){
            if (d[j-x]!=0)
                d[j]=min(d[j],d[j-x]+y);
            else if (j==x)
                d[j]=y;
            if (j>=k)
                sol=min(sol,d[j]);
        }
    }
    if (k>s || d[k]==INF)
            fprintf (fout,"-1");
    else fprintf (fout,"%d",sol);
    return 0;
}