Pagini recente » Monitorul de evaluare | Monitorul de evaluare | Cod sursa (job #2247472) | Cod sursa (job #1034396) | Cod sursa (job #412864)
Cod sursa(job #412864)
#include<fstream>
#define MAXW 5001
#define MAXG 1001
using namespace std;
ifstream f ("energii.in");
ofstream g ("energii.out");
const int x = 32000;
int G, W , dp[MAXW];
struct generator{
int e,c;};
generator v[MAXG];
void read()
{
int i;
f >> G >> W;
for(i = 1 ; i <= G ; i++)
f >> v[i].e >> v[i].c;
}
int solve()
{
int i,j;
for(i = 1 ; i <= W ; i++)
dp[i] = x;
dp[0] = 0;
for(i = 1 ; i <= G ; i++)
for(j = W ; j >=0 ; j--)
if( j+v[i].e < W)
{
if(dp[j+v[i].e] > dp[j] + v[i].c)
dp[j+ v[i].e] = dp[j] + v[i].c;
}
else
if( dp[W] > dp[j]+ v[i].c)
dp[W] = dp[j] + v[i].c;
if(dp[W] != x)
return dp[W];
return -1;
}
int main ()
{
read();
g << solve() << '\n';
f.close();
g.close();
return 0;
}