Pagini recente » Cod sursa (job #1951683) | Cod sursa (job #198170) | Cod sursa (job #2177340) | Cod sursa (job #197935)
Cod sursa(job #197935)
#include<stdio.h>
long t[101],c[101],ta[101],tb[101],ca[101],cb[101],sa[101],sb[101],l,i,n,iu;
void swap(long i1,long i2);
int main()
{
freopen("lapte.in","rt",stdin);
freopen("lapte.out","wt",stdout);
scanf("%ld%ld",&n,&l);
for(i=1;i<=n;i++) { scanf("%d%d",&ta[i],&tb[i]);c[i]=i;}
ca[1]=l;cb[1]=l;t[1]=l*(ta[1]+tb[1]);
iu=1;
while(iu)
{ iu=0;
if(ca[1])
{ for(i=2;i<=n;i++)
if(t[i]+ta[i]<t[1])iu=i;
}
if(iu)
{ ca[1]--;
ca[iu]++;
t[1]-=ta[1];
t[iu]+=ta[iu];
if(t[iu]>t[1])swap(1,iu);
while(iu<n&&t[iu]<t[iu+1]){swap(iu,iu+1);iu++;}
while(t[iu]>t[iu-1]){swap(iu,iu-1);iu--;}
iu=1;
while(t[iu]<t[iu+1]){swap(iu,iu+1);iu++;}
continue;
}
if(cb[1])
{ for(i=2;i<=n;i++)
if(t[i]+tb[i]<t[1])iu=i;
}
if(iu)
{ cb[1]--;
cb[iu]++;
t[1]-=tb[1];
t[iu]+=tb[iu];
if(t[iu]>t[1])swap(1,iu);
while(iu<n&&t[iu]<t[iu+1]){swap(iu,iu+1);iu++;}
while(t[iu]>t[iu-1]){swap(iu,iu-1);iu--;}
iu=1;
while(t[iu]<t[iu+1]){swap(iu,iu+1);iu++;}
}
}
printf("%ld\n",t[1]);
for(i=1;i<=n;i++){sa[c[i]]=ca[i];sb[c[i]]=cb[i];}
for(i=1;i<=n;i++)printf("%ld %ld\n",sa[i],sb[i]);
return 0;
}
void swap(long i1,long i2)
{
long
aux=c[i1];c[i1]=c[i2];c[i2]=aux;
aux=t[i1];t[i1]=t[i2];t[i2]=aux;
aux=ta[i1];ta[i1]=ta[i2];ta[i2]=aux;
aux=tb[i1];tb[i1]=tb[i2];tb[i2]=aux;
aux=ca[i1];ca[i1]=ca[i2];ca[i2]=aux;
aux=cb[i1];cb[i1]=cb[i2];cb[i2]=aux;
}