Pagini recente » Cod sursa (job #982177) | Cod sursa (job #713837) | Cod sursa (job #1368501) | Cod sursa (job #550754) | Cod sursa (job #1536774)
#include<cstdio>
#include<algorithm>
#include<cstring>
#define DIM 100000
using namespace std;
int n, m, i, ii;
long long p, u, mid, sum, r[100005];
int c[100005], t[100005];
char s[DIM + 5];
FILE * fin = fopen("garaj.in", "r");
FILE * fout = fopen("garaj.out", "w");
int f(long long mid){
int i;
long long sum = 0;
for(i = 1; i <= n; i++){
sum = sum + (mid / t[i]) * 1LL * c[i];
if(sum >= m){
return 1;
}
}
return 0;
}
int numar(){
while(s[ii] < '0' || s[ii] > '9'){
ii++;
if(ii == DIM){
ii = 0;
fread(s, 1, DIM, fin);
}
}
int x = 0;
while(s[ii] >= '0' && s[ii] <= '9'){
x = x * 10 + s[ii] - '0';
ii++;
if(ii == DIM){
ii = 0;
fread(s, 1, DIM, fin);
}
}
return x;
}
int main(){
fread(s, 1, DIM, fin);
ii = 0;
n = numar();
m = numar();
p = 1;
u = 1000000000000LL;
for(i = 1; i <= n; i++){
c[i] = numar();
t[i] = numar();
t[i] *= 2;
//u = min(u, t[i] * 1LL * m / c[i] + t[i]);
}
while(p <= u){
mid = (p + u) / 2;
if(f(mid)){
u = mid - 1;
}
else{
p = mid + 1;
}
}
fprintf(fout, "%d ", p);
for(i = 1; i <= n; i++){
r[i] = (p / t[i]) * 1LL * c[i];
}
sort(r + 1, r + n + 1);
for(i = n; i >= 1; i--){
sum += r[i];
if(sum >= m){
fprintf(fout, "%d\n", n - i + 1);
break;
}
}
return 0;
}