Pagini recente » Cod sursa (job #1732550) | Cod sursa (job #2205940) | Cod sursa (job #1707754) | Cod sursa (job #2401414) | Cod sursa (job #2910318)
#include <bits/stdc++.h>
using namespace std;
ifstream fin( "garaj.in" );
ofstream fout( "garaj.out" );
const int DIM = 100005;
struct trk {
int cp, t;
} v[DIM];
int n;
int getMax( int at ) {
int s = 0;
for ( int i = 1; i <= n; ++i ) {
s += at / v[i].t * v[i].cp;
}
return s;
}
int main() {
int m;
fin >> n >> m;
for ( int i = 1; i <= n; ++i ) {
fin >> v[i].cp >> v[i].t;
v[i].t *= 2;
}
int l = 0, r = 1e6;
while ( r - l > 1 ) {
int mid = (l + r) / 2;
if ( getMax(mid) < m ) {
l = mid;
} else {
r = mid;
}
}
vector<int> q;
for ( int i = 1; i <= n; ++i ) {
q.push_back(r / v[i].t * v[i].cp);
}
sort(q.begin(), q.end());
int cnt = 0, s = 0;
for ( int i = q.size() - 1; i >= 0 && s < m; --i ) {
s += q[i];
++cnt;
}
fout << r << " " << cnt;
fin.close();
fout.close();
return 0;
}