Pagini recente » Cod sursa (job #1734834) | Cod sursa (job #2767676) | Cod sursa (job #217481) | Cod sursa (job #2440778) | Cod sursa (job #1739688)
#include <iostream>
#include <fstream>
using namespace std;
ifstream fin("energii.in");
ofstream fout("energii.out");
long long d[5002];
int minn(int a,int b,int c)
{
if(a<=b && a<=c)
return a;
if(b<=a && b<=c)
return b;
//if(c>=a && c>=b)
return c;
}
int main()
{
int G,W,i,w,NMAX=100000;
pair<int,int>p[1002];
fin>>G>>W;//Generatoare,energia necesara
for(i=1;i<=G;i++)
fin>>p[i].first>>p[i].second;//energia,costul
for(i=1;i<=W+1;i++)
d[i]=NMAX;
for(i=1;i<=G;i++)
{
for(w=W;w>=p[i].first;w--)
d[w]=minn(d[w],d[w-p[i].first]+p[i].second,d[w+1]);
for(w=p[i].first-1;w>=1;w--)
d[w]=min(d[w],d[w+1]);
}
if(d[W]<NMAX)
fout<<d[W];
else
fout<<-1;
return 0;
}