Pagini recente » Cod sursa (job #717939) | Cod sursa (job #338738) | Cod sursa (job #1023928) | Cod sursa (job #1752979) | Cod sursa (job #295469)
Cod sursa(job #295469)
#include <fstream.h>
#define MaxG 1005
#define MAX 10000009
long e[MaxG],c[MaxG],max,g,w,s[MAX],min=MAX;
int a[MAX];
void cit()
{
int i;
ifstream fin("energii.in");
fin>>g>>w;
for(i=1;i<=g;i++)
fin>>e[i]>>c[i];
fin.close();
}
void sol()
{
long i,maxt,mint=MAX,j,mintt;
for(i=1;i<=g;i++)
{
maxt=max; mintt=mint;
for(j=maxt;j>=mintt;j--)
if(a[j] && (s[j]+c[i]<s[j+e[i]] || !a[j+e[i]]))
{
if(!a[j+e[i]])
{
if(s[j]+c[i]<MAX && (s[j]+c[i]<min))
{
s[j+e[i]]=s[j]+c[i];
a[j+e[i]]=1;
if(j+e[i]>=w)
min=s[j]+c[i];
if(j+e[i]>max)
max=j+e[i];
if(j+e[i]<mint)
mint=j+e[i];
}
}
else
{
s[j+e[i]]=s[j]+c[i];
a[j+e[i]]=1;
if(j+e[i]>=w && (s[j]+c[i]<min))
min=s[j]+c[i];
if(s[j]+c[i]>max)
max=s[j]+c[i];
if(s[j]+c[i]<mint)
mint=s[j]+c[i];
}
}
if(!s[e[i]] || s[e[i]]>c[i])
{
if(c[i]<min )
{
s[e[i]]=c[i];
a[e[i]]=1;
if(e[i]>=w)
min=c[i];
if(e[i]>max)
max=e[i];
if(e[i]<mint)
mint=e[i];
}
}
}
}
void afis()
{
ofstream fout("energii.out");
if(min==MAX)
fout<<-1;
else
fout<<min;
fout.close();
}
int main()
{
cit();
sol();
afis();
return 0;
}