Pagini recente » Cod sursa (job #64041) | Cod sursa (job #3242769) | Monitorul de evaluare | Cod sursa (job #722816) | Cod sursa (job #1213605)
#include <fstream>
#include <iostream>
#include <cstring>
#include <vector>
using namespace std;
ifstream fi("energii.in");
ofstream fo("energii.out");
const unsigned long infi=999999;
const int enermax=10000;
const int wmax=5001;
unsigned long s[enermax+wmax+5];
int main()
{
int n,w;
fi>>n>>w;
int x,y;
long max;
memset(s,infi,sizeof(s));
s[0]=0;
long suma=0;
for (int i=1;i<=n;++i)
{
fi>>x>>y;
suma+=y;
for (int j=w;j>=0;--j)
if (s[j]!=infi)
if (s[j+x]==infi ||(s[j+x]>s[j]+y))
s[j+x]=s[j]+y;
}
max=infi;
for (int i=w;i<w+enermax;++i)
if (max>s[i]) max=s[i];
if (suma<w)
max=-1;
fo<<max<<"\n";
}