Cod sursa(job #752291)

Utilizator geniucosOncescu Costin geniucos Data 28 mai 2012 12:10:51
Problema Energii Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.65 kb
#include<cstdio>
using namespace std;
int s2,n,s1,e,c,mini,i,j,s[5902];
int main()
{
freopen("energii.in","r",stdin);
freopen("energii.out","w",stdout);
scanf("%d",&n);
scanf("%d",&s1);
mini=999999999;
for(i=1;i<=s1;i++)
	s[i]=-1;
for(i=1;i<=n;i++)
{
	scanf("%d",&e);
	scanf("%d",&c);
	s2=s2+e;
	for(j=s1;j>=1;j--)
	if(s[j]!=-1)
	{
		if(j+e<=s1&&s[j+e]==-1||s[j+e]>s[j]+c) s[j+e]=s[j]+c;
		if(j+e>s1&&s[j]+c<mini) mini=s[j]+c;
	}
	if(e>s1&&c<mini) mini=c;
	if(s[e]==-1||s[e]>c) s[e]=c;
	if(e>=s1&&c<mini) mini=c;
}
if(s[s1]!=-1&&s[s1]<mini) mini=s[s1];
if(mini!=999999999&&s2>=s1) printf("%d\n",mini);
else printf("-1\n");
return 0;
}