Cod sursa(job #1609256)

Utilizator gorni97aaa aaa gorni97 Data 22 februarie 2016 18:11:46
Problema Energii Scor 55
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.84 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;
long long minim;
minim=10000000;
fstream f("energii.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]=10000003;

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();

}