Cod sursa(job #1151089)

Utilizator serbanSlincu Serban serban Data 23 martie 2014 20:47:03
Problema Energii Scor 5
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.74 kb
#include <iostream>
#include <cstdio>

using namespace std;

int n,G,w[5105],p[1005],x[1005][5005];

int main()
{
    int i,j;
    FILE *f=fopen("energii.in","r");
    FILE *g=fopen("energii.out","w");
    fscanf(f,"%d%d",&n,&G);
    for(i=1;i<=n;i++)
    {
        fscanf(f,"%d%d",&w[i],&p[i]);
        for(j=1;j<=w[i];j++)
        {
            x[i][j]=p[i];
            if(x[i-1][j])
            {
                x[i][j]=min(x[i][j],x[i-1][j]);
                if(x[i][j+w[i]])
                    x[i][j+w[i]]=min(p[i]+x[i][j-1],x[i][j+w[i]]);
                else x[i][j+w[i]]=p[i]+x[i][j-1];
            }
        }
    }
    if(x[n][G])
        fprintf(g,"%d\n",x[n][G]);
    else fprintf(g,"-1\n");
    return 0;
}