Pagini recente » Cod sursa (job #2221613) | Cod sursa (job #2828997) | Cod sursa (job #580061) | Cod sursa (job #2639639) | Cod sursa (job #130447)
Cod sursa(job #130447)
#include<stdio.h>
long int ge,w,cmin,*e1,*e2,*e3,l1,l2,l3,*c1,*c2,*c3,egi,cgi,i,j,p1,p2,*caux,
se1[5002],se2[5002],se3[5002],sc1[5002],sc2[5002],sc3[5002];
int main()
{
FILE *f,*g;f=fopen("energii.in","r");g=fopen("energii.out","w");
fscanf(f,"%ld",&ge);fscanf(f,"%ld",&w);
e1=se1;e2=se2;e3=se3;
c1=sc1;c2=sc2;c3=sc3;
cmin=20000000;
e1[1]=0;c1[1]=0;l1=1;
for(i=1;i<=ge;i++)
{ fscanf(f,"%ld%ld",&egi,&cgi);
for(j=1;j<=l1;j++){ e2[j]=e1[j]+egi;c2[j]=c1[j]+cgi;}
p1=1;p2=1;l2=l1;
while(e2[l2]>=w)cmin=(cmin<=e2[l2])?cmin:e2[l2];
while(p1<=l1&&p2<=l2)
{ if(e1[p1]<e2[p2])
{ if(c1[p1]<cmin)
{l3++;e3[l3]=e1[p1];c3[l3]=c1[p1];}
p1++;
}
else
if(e1[p1]>e2[p2])
{ if(c2[p2]<cmin)
{l3++;e3[l3]=e2[p2];c3[l3]=c2[p2];}
p2++;
}
else
{ if(c1[p1]<cmin||c2[p2]<cmin)
{l3++;e3[l3]=e1[p1];c3[l3]=(c1[p1]<c2[p2])?c1[p1]:c2[p2];}
p1++;p2++;
}
}
while(p1<=l1)
{ if(c1[p1]<cmin)
{l3++;e3[l3]=e1[p1];c3[l3]=c1[p1];}
p1++;
}
while(p2<=l2)
{ if(c2[p2]<cmin)
{l3++;e3[l3]=e2[p2];c3[l3]=c2[p2];}
p2++;
}
caux=e1;e1=e3;e3=e2;e2=caux;
caux=c1;c1=c3;c3=c2;c2=caux;
l1=l3;l2=0;l3=0;
}
if(cmin==20000000)fprintf(g,"-1\n");
else fprintf(g,"%ld",cmin);
fcloseall();
return 0;
}