Pagini recente » Cod sursa (job #2676507) | Cod sursa (job #1426405) | Cod sursa (job #2043712) | Cod sursa (job #2271578) | Cod sursa (job #1870318)
#include <iostream>
#include<fstream>
using namespace std;
ifstream f("energii.in");
ofstream g("energii.out");
struct centrala
{
int energie, cost;
};
int n,gmax,i,j,a[5002], b[5002],s;
centrala e[1001];
int main()
{
f>>n>>gmax;
for(i=1;i<=n;++i)
{
f>>e[i].energie>>e[i].cost;
s+=e[i].energie;
}
if(s<gmax)
g<<-1;
else
{
for(i=1;i<=n;++i)
for(j=1;j<=gmax;++j)
{if(i%2==1)
{
if(e[i].energie>j)
a[j]=b[j];
else
{if(b[j]==0)
a[j]=e[i].cost+b[j-e[i].energie];
else
if(e[i].energie>=gmax)
a[j]=e[i].cost;
else
a[j]=min(b[j],e[i].cost+b[j-e[i].energie]);
}
}
else
{
if(e[i].energie>j)
b[j]=a[j];
else
{if(a[j]==0)
b[j]=e[i].cost+a[j-e[i].energie];
else
{if(e[i].energie>=gmax) b[j]=e[i].cost;
else
b[j]=max(a[j],e[i].cost+a[j-e[i].energie]);
}
}
}
}
if(n%2==0)
g<<b[gmax];
else g<<a[gmax];
}
f.close();
g.close();
return 0;
}