Cod sursa(job #1609221)

Utilizator gorni97aaa aaa gorni97 Data 22 februarie 2016 17:54:30
Problema Energii Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.81 kb
#include <iostream>
#include <fstream>
#include <cmath>
#define maxg 1001
#define maxw 5005
using namespace std;
struct p{int en;int co;}v[maxg];

int min(int x,int y)
{if(x>y)
return y;
return x;
}

int main()

{int a[2][maxw],i,j,g,w,s=0,minim=10000;
fstream f("fisier.in",ios::in);
fstream h("energii.out",ios::out);
f>>g>>w;


for(i=1;i<=g;i++)
  {f>>v[i].en>>v[i].co;
   s=s+v[i].en;}

f.close();
if(s>=w)
{a[0][0]=0;

    for(i=1;i<=5001;i++)
    a[0][i]=10003;

for(i=1;i<=g;i++)
{

    for(j=0;j<=5001;j++)
    {
        if(v[i].en<=j)
        a[1][j]=min(a[0][j],a[0][j-v[i].en]+v[i].co);


        if((j>=w)&&(a[1][j]<minim))
            minim=a[1][j];

    }

for(j=v[i].en;j<=5001;j++)
    a[0][j]=a[1][j];

}
h<<minim;

}
else
    h<<-1;

h.close();

}