Pagini recente » Cod sursa (job #2042733) | Cod sursa (job #558680) | Cod sursa (job #1887184) | Cod sursa (job #1622997) | Cod sursa (job #574363)
Cod sursa(job #574363)
#include<fstream>
#include<vector>
#include<bitset>
#define MAX 14002
#define INF 0x3f3f3f
using namespace std;
int sol[MAX],W,G,minim = INF;
struct gen
{
int c,e;
}v[1002];
bitset<1002> viz;
void read()
{
ifstream f("energii.in");
f>>G>>W;
int i;
for(i=1;i<=G;++i)
f>>v[i].e>>v[i].c;
f.close();
}
int cmp(gen a,gen b)
{
return (a.c<b.c);
}
int main()
{
read();
sort(v+1,v+1+G,cmp);
fill(sol+1,sol+MAX,INF);
sol[0] = 0;
int i,j;
for(i=1;i<=G;++i)
{
for(j=0;j<W;++j)
if(!viz[j] && sol[j]+v[i].c<sol[j+v[i].e])
{
sol[j+v[i].e] = sol[j]+v[i].c;
viz[j+v[i].e] = 1;
if(j+v[i].e>=W && sol[j+v[i].e] < minim)
minim = sol[j+v[i].e];
}
viz.reset();
}
if(minim == INF)minim = -1;
ofstream g("energii.out");
g<<minim<<"\n";
g.close();
return 0;
}