Pagini recente » Borderou de evaluare (job #2247361) | Borderou de evaluare (job #315059) | Borderou de evaluare (job #2021144) | Borderou de evaluare (job #202489) | Cod sursa (job #905194)
Cod sursa(job #905194)
#include <iostream>
#include <fstream>
////https://infoarena.ro/problema/energii
using namespace std;
ifstream in ("energii.in");
ofstream out ("energii.out");
int g,w,et,e[10001],c[10001],cost[15001];
int calculeaza()
{
int i,j,inf,min;
inf=30000;
for(i=1;i<=w;i++)
cost[i]=inf;
for(i=1;i<=g;i++)
for(j=w;j>=0;j--)
if(cost[j]!=inf && cost[j]+c[i]<cost[j+e[i]])
cost[j+e[i]]=cost[j]+c[i];
min=inf;
for(i=1;i<=1001;i++)
if(cost[i]<min) min=cost[i];
return min;
}
int main()
{
int i,j,ok=0;
in>>g>>w;
for(i=1;i<=g;i++)
in>>e[i]>>c[i];
for(i=1;i<=g;i++)
{
et+=e[i];
if(e[i]==w)
{
out<<c[i];
ok=1;
return 0;
}
}
if(ok==0)
if(et<w)out<<"-1";
else calculeaza();
return 0;
}