Cod sursa(job #354764)

Utilizator robigiirimias robert robigi Data 9 octombrie 2009 13:09:33
Problema Energii Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.97 kb
#include <fstream>

using namespace std;

ifstream f ("energii.in");
ofstream g ("energii.out");

int n, gg, cant[2000], cost[2000], e[20000];
int v[1001*1001];


void read()
{    f >> n >> gg;
     for (int i=1; i<=n; i++)
     {   f >> cant[i] >> cost[i];
         e[i]=1;
     }
}

int min(int x, int y, int & cv)
{   if (x>y && cv==1) { cv=0; return y; }
    else return x;
}

void init()
{    for (int i=1; i<=1001*1001; i++)
         v[i]=2000000001;
}

void functie()
{    for (int i=1; i<=gg*gg; i++)
         for (int j=1; j<=n; j++)
         if (cant[j]<=i && (v[i]-v[i-cant[j]]>cost[j]) && e[j]) { v[i]=v[i-cant[j]]+cost[j]; e[j]=0;}
     int mini=2000000002;
     for (int j=gg-1; j<=gg*gg; j++)
         if (v[j]<=mini) mini=v[j];
     g << mini;
}





void afis()
{    for (int i=1; i<=gg; i++)
             g << v[i] << "\n";
}    






int main()
{   read();
    init();
    functie();
//    afis();
    return 0;
}