Cod sursa(job #925675)

Utilizator Vally77FMI Calinescu Valentin Gelu Vally77 Data 24 martie 2013 17:50:15
Problema Energii Scor 5
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.97 kb
#include <iostream>
#include <fstream>
using namespace std;
ifstream ka("energii.in");
ofstream ki("energii.out");
int g,w,k,sol[5001][1001];
bool gasit=false;
struct generator
{
    int p,c;
}a[1001];
int main()
{
    ka>>g>>w;
    for(int i=1;i<=g;i++)
    {
        ka>>a[++k].p;
        ka>>a[k].c;
        if(sol[a[k].p][0]==0||sol[a[k].p][0]>a[k].c)
        {
            sol[a[k].p][0]=a[k].c;
            sol[a[k].p][a[k].p]=1;
        }
    }
    for(int i=1;i<=5001;i++)
    {
        for(int j=1;j<=g;j++)
        {
            if((i>a[j].p&&sol[i][0]==0&&sol[i-a[j].p][0]!=0&&sol[i-a[j].p][a[j].p]==0)||(i>a[j].p&&sol[i-a[j].p][0]!=0&&sol[i-a[j].p][0]+a[j].c<sol[i][0]&&sol[i-a[j].p][a[j].p]==0))
            sol[i][0]=sol[i-a[j].p][0]+a[j].c;
            sol[i][a[j].p]=1;
        }
        if(i>=w&&sol[i][0]!=0)
        {
            ki<<sol[i][0];
            gasit=true;
            break;
        }
    }
    if(!gasit)
    ki<<"-1";

}