Pagini recente » Cod sursa (job #238215) | Cod sursa (job #2956804) | Cod sursa (job #677987) | Cod sursa (job #1752668) | Cod sursa (job #1737993)
#include <bits/stdc++.h>
using namespace std;
struct my{int x,y,p;} A[110],R[110];
bool cmp(my a,my b){return a.x*b.y > b.x*a.y;}
int N,st,dr=110,m,L;
bool ck(int t){
int s1=0,s2=0,i;
for(i = 0;i<N;i++) s1+=t/A[i].x;
if(s1<L) return false;
i=0;
while(s2 < L && s1>=L && i<N){
int c = min(t/A[i].y,L-s2);
R[i].y = c;
s2+=c;
s1-=c*A[i].y/A[i].x;
R[i].x = t/A[i].x - c*A[i].y/A[i].x;
++i;
}
R[i].y = 0;
return s2 >= L && s1>=L;
}
int main(){
ifstream cin("lapte.in");
ofstream cout("lapte.out");
cin >> N >> L;
int i = 0;
for(i = 0;i<N;i++){cin >> A[i].x >> A[i].y;A[i].p=i;}
sort(A,A+N,cmp);
while(st<dr-1){
m = (st+dr)/2;
(ck(m) ? dr : st) = m;
}
for(;!ck(st);st++);
cout << st << '\n';
i=0;
while(R[i].y){cout << R[i].x << ' ' << R[i].y << '\n';++i;}
for(;i<N;i++) cout << st/A[i].x << ' ' << 0 << '\n';
return 0;
}