Cod sursa(job #892785)

Utilizator miron_dorin95Miron Dorin miron_dorin95 Data 26 februarie 2013 11:41:17
Problema Energii Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.24 kb
#include <fstream>
using namespace std;
ifstream f("calatorie.in");
ofstream g("calatorie.out");
int t,n,h[51];
long long v[51],bst[51][100];
void citire()
{
    int i;
    f>>n;
    for(i=1;i<n;i++)
        f>>v[i]>>h[i];
}
int main()
{
    int i,j,k;
    long long rasp;
    f>>t;
    for(k=1;k<=t;k++)
    {
        rasp=1073741824;
        citire();
        for(i=1;i<n;i++)
        {
            if(v[i]!=0 && h[i]!=0)
            {
                bst[i][0]=bst[i-1][0]+v[i];
                for(j=1;j<=100 &&bst[i][j-1];j++)
                {
                    if(h[i]>j)
                        bst[i][j]=min(bst[i-1][j]+v[i],bst[i][j-1]);
                    else
                        bst[i][j]=min(bst[i-1][j]+v[i], bst[i-1][j-h[i]]);
                }
            }
            else
                for(j=0;j<=100 &&bst[i][j-1];j++)
                    bst[i][j]=bst[i-1][j];
        }
        for(j=0;j<=100;j++)
        {
            if(rasp>bst[n-1][j]+j*j*j*j)
                rasp=bst[n-1][j]+j*j*j*j;
        }
        if(n==1 || n==0)
            g<<"Consumul minim = 0.";
        else
            g<<"Consumul minim = "<<rasp<<".";
        if(k!=t)
            g<<endl;
    }
    return 0;
}