Pagini recente » Statistici ioan ursescu (iursescu) | Istoria paginii utilizator/adrianbrabete | Cod sursa (job #1780168) | Cod sursa (job #2162238) | Cod sursa (job #295440)
Cod sursa(job #295440)
#include <fstream.h>
#define MaxG 1005
#define MAX 10000009
long e[MaxG],c[MaxG],max,g,w,s[MAX],min;
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;
for(i=1;i<=g;i++)
{
maxt=max;
for(j=maxt;j>=mint;j--)
if(s[j] && (s[j]+c[i]<s[j+e[i]] || ! s[j+e[i]]))
{
if(!s[j+e[i]])
{
if(s[j]+c[i]<MAX && (s[j]+c[i]<min || !min))
{
s[j+e[i]]=s[j]+c[i];
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];
if(j+e[i]>=w && (s[j]+c[i]<min || !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 || !min)
{
s[e[i]]=c[i];
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==0)
fout<<-1;
else
fout<<min;
fout.close();
}
int main()
{
cit();
sol();
afis();
return 0;
}