Pagini recente » Cod sursa (job #1873933) | Cod sursa (job #798101) | Cod sursa (job #3217551) | Monitorul de evaluare | Cod sursa (job #1536756)
#include<fstream>
#include<algorithm>
using namespace std;
int n, m, i;
long long p, u, mid, sum;
int c[1005], t[1005], r[1005];
ifstream fin("garaj.in");
ofstream fout("garaj.out");
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 main(){
fin>> n >> m;
p = 1;
u = 1000000000000LL;
for(i = 1; i <= n; i++){
fin>> c[i] >> t[i];
t[i] *= 2;
u = min(u, t[i] * 1LL * m + t[i]);
}
while(p <= u){
mid = (p + u) / 2;
if(f(mid)){
u = mid - 1;
}
else{
p = mid + 1;
}
}
fout<< p <<" ";
for(i = 1; i <= n; i++){
r[i] = p / t[i] * c[i];
}
sort(r + 1, r + n + 1);
for(i = n; i >= 1; i--){
sum += r[i];
if(sum >= m){
fout<< n - i + 1 <<"\n";
break;
}
}
return 0;
}