Cod sursa(job #1416710)

Utilizator vazanIonescu Victor Razvan vazan Data 8 aprilie 2015 19:42:16
Problema Energii Scor 5
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.89 kb
#include<cstdio>
#define INF 2000000000
using namespace std;
int v[10000001];
int main()
{
    FILE *in, *out;
    in=fopen("energii.in", "r");
    out=fopen("energii.out", "w");
    int n, s, i, g, p, j;
    fscanf(in, "%d%d", &n, &s);
    v[0]=0;
    for(i=1; i<=10000000; i++)
        v[i]=INF;
    int smax=0, min=INF;
    for(i=1; i<=n; i++)
    {
        fscanf(in, "%d%d", &g, &p);
        for(j=smax; j>=0; j--)
            if(v[j]&&v[j+g]>v[j]+p)
            {
                v[j+g]=v[j]+p;
                if(j+g>smax)
                    smax=j+g;
            }
        if(p<v[g])
        {
            v[g]=p;
            if(smax<g)
                smax=g;
        }
    }
    for(i=smax; i>=g; i--)
        if(v[i]<min)
            min=v[i];
    if(min==INF)
        min=-1;
    fprintf(out, "%d", min);
    fclose(in);
    fclose(out);
    return 0;
}