Pagini recente » Cod sursa (job #422632) | Cod sursa (job #3210943) | Cod sursa (job #1054668) | Cod sursa (job #1853768) | Cod sursa (job #2198728)
#include <iostream>
#include <fstream>
#include <algorithm>
using namespace std;
ifstream f("lapte.in");
ofstream g("lapte.out");
struct triplet
{
int x,y,i;
float r;
}v[100];
int n,l,a[100],b[100],i,j,t,ta,tb,t1,t2;
int comp(triplet a, triplet b){
if(a.r <= b.r) return 1;
return 0;
}
int sim(){
for(i = 0 ; i < n ; i++){
ta = tb = 0;
for(j = 0 ; j < i ; j++){
a[v[j].i] = t/v[j].x;
ta += a[v[j].i];
b[v[j].i] = t%v[j].x/v[j].y;
tb += b[v[j].i];
}
for(j = i+1 ; j < n ; j++){
b[v[j].i] = t/v[j].y;
tb += b[v[j].i];
a[v[j].i] = t%v[j].y/v[j].x;
ta += a[v[j].i];
}
if((l-ta)*(l>ta)*v[i].x + (l-tb)*(l>tb)*v[i].y < t){
a[v[i].i] = (l-ta)*(l>ta);
b[v[i].i] = (l-tb)*(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();
g<<t<<"\n";
for(j=0;j<n;j++)
g<<a[j]<<' '<<b[j]<<"\n";
return 0;
}