Pagini recente » Cod sursa (job #1484562) | Cod sursa (job #1830136) | Cod sursa (job #1259143) | Cod sursa (job #854405) | Cod sursa (job #2128465)
#include <fstream>
#include <iostream>
#include <algorithm>
using namespace std;
struct triplet
{
int x,y,i;
float r;
}v[100];
int n,l,a[100],b[100],i,j,t,ta,tb,t1,t2;
fstream f("lapte.in",ios::in),g("lapte.out",ios::out);
int comp(triplet a,triplet b)
{
if(a.r<=b.r) return 1;
return 0;
}
int sim()
{
for(i=0;i<n;i++)
{
ta=0;tb=0;
for(j=0;j<i;j++)
{
a[v[j].i]=t/v[j].x;
ta+=t/v[j].x;
b[v[j].i]=t%v[j].x/v[j].y;
tb+=t%v[j].x/v[j].y;
}
for(j=i+1;j<n;j++)
{
b[v[j].i]=t/v[j].y;
tb+=t/v[j].y;
a[v[j].i]=t%v[j].y/v[j].x;
ta+=t%v[j].y/v[j].x;
}
if((l-ta)*(l>ta)*v[i].x+(l-tb)*(l>tb)*v[i].y<t)
{
a[v[i].i]=l-ta;
b[v[i].i]=l-tb;
return 1;
}
}
return 0;
}
void output()
{
g<<t<<'\n';
for(j=0;j<n;j++)
g<<a[j]<<' '<<b[j]<<'\n';
}
int main()
{
f>>n>>l;
for(i=0;i<n;i++)
{
f>>v[i].x>>v[i].y;
v[i].i=i;
v[i].r=v[i].x/v[i].y;
}
sort(v,v+n,comp);
t1=1;t2=10000;
while(t1!=t2)
{
t=t1+t2;
t/=2;
if(sim())t2=t;
else t1=t+1;
}
t=t1;
sim();
output();
}