Pagini recente » Cod sursa (job #75398) | Cod sursa (job #2088592) | Cod sursa (job #2431122)
#include <fstream>
#define min(A,B) (A>B)?(B):(A)
#define change(A) (A%2==1)?0:1
using namespace std;
ifstream fin("energii.in");
ofstream fout("energii.out");
struct ceva
{
int cost,energie;
}a[1010];
int g,w;
int b[2][5010];
int main()
{
fin>>g>>w;
for(int i=1;i<=g;i++)
{
fin>>a[i].energie>>a[i].cost;
}
for(int i=1;i<=g;i++)
{
for(int j=0;j<=w;j++)
{
if(j>=w)b[i%2][j]=0;
else if(i==1)b[i%2][j]=1000000000;
else b[i%2][j]=min(a[i].cost+b[change(i)][min(j+a[i].energie,w)],b[change(i)][j]);
}
}
if(b[g%2][0]==1000000000)fout<<-1;
else fout<<b[g%2][0];
return 0;
}