Pagini recente » Cod sursa (job #2171360) | Cod sursa (job #3259683) | Cod sursa (job #2305343) | Cod sursa (job #2347684) | Cod sursa (job #3178782)
#include <iostream>
#include <fstream>
#include <algorithm>
using namespace std;
ifstream fin("garaj.in");
ofstream fout("garaj.out");
struct {
int timp;
int cantitate;
}v[100001];
long long n, m, a[100001];
int cateSticle(long long t){
int r=0;
for (int i=1; i<=n; i++){
r+=(t/v[i].timp)*v[i].cantitate;
if (r>=m) break;
}
return r;
}
int cb(int m){
long long st = 1, dr=m*m, mij;
while(st<=dr){
mij = (st+dr)/2;
int s = cateSticle(mij);
if (s<m){
st=mij+1;
}
else{
dr = mij-1;
}
}
return st;
}
int main() {
fin >> n >> m;
for (int i=1; i<=n; i++){
fin >> v[i].cantitate >> v[i].timp;
v[i].timp *= 2;
}
int t = cb(m);
fout << t << ' ';
for (int i=1; i<=n; i++){
a[i] = (t/v[i].timp)*v[i].cantitate;
}
sort(a+1, a+n+1, greater<int>());
int s=0;
for (int i=1; i<=n; i++){
m-=a[i];
s++;
if (m<=0) break;
}
fout << s;
return 0;
}