Pagini recente » Cod sursa (job #2820960) | Cod sursa (job #1909800) | Cod sursa (job #2584344) | Cod sursa (job #232618) | Cod sursa (job #1374077)
#include <fstream>
#include <climits>
using namespace std;
ifstream fin("energii.in");
ofstream fout("energii.out");
int g,w,s[100005],e[1005],c[1005];
void citire()
{
fin>>g>>w;
for(int i=1;i<=g;i++)
fin>>e[i]>>c[i];
}
int minim(int a,int b)
{
if(a<b)
return a;
return b;
}
void rezolv()
{
int mnm=INT_MAX,nrm=0;
for(int i=1;i<=g;i++)
{
for(int j=minim(nrm,w);j>=1;j--)
if(s[j])
{
if(s[j+e[i]])
{
if(s[j]+c[i]<s[j+e[i]])
s[j+e[i]]=s[j]+c[i];
}
else
{
s[j+e[i]]=s[j]+c[i];
if(j+e[i]>nrm)
nrm=j+e[i];
}
if(j+e[i]>=w&&s[j+e[i]]<mnm)
mnm=s[j+e[i]];
}
if(s[e[i]])
{
if(s[e[i]]>c[i])
s[e[i]]=c[i];
}
else
{
s[e[i]]=c[i];
if(e[i]>nrm)
nrm=e[i];
}
if(e[i]>=w&&s[e[i]]<mnm)
mnm=s[e[i]];
}
if(mnm==INT_MAX)
fout<<-1;
else
fout<<mnm;
}
int main()
{
citire();
rezolv();
return 0;
}