Pagini recente » Cod sursa (job #1167146) | Cod sursa (job #386842) | Cod sursa (job #1718496) | Cod sursa (job #1614285) | Cod sursa (job #2323580)
#include <bits/stdc++.h>
using namespace std;
ifstream fin ("garaj.in");
ofstream fout ("garaj.out");
int n, m, Tmin = 1, dr = INT_MAX, Nrmin;
struct Suc_De_Struguri{
int capacitate, timp;
}v [100003];
bool cmp (Suc_De_Struguri A, Suc_De_Struguri B){
return A.capacitate > B.capacitate;
}
int main (){
fin >> n >> m;
for (int i = 1; i <= n; i ++){
fin >> v [i].capacitate >> v [i].timp;
v [i].timp *= 2;
}
while (Tmin <= dr){
int med = Tmin + (dr - Tmin) / 2, k = 1, sum = 0;
while (k <= n && sum < m){
sum += v [k].capacitate * (med / v [k].timp);
k ++;
}if (sum >= m)dr = med - 1;
else Tmin = med + 1;
}
for (int i = 1; i <= n; i ++)
v [i].capacitate = v [i].capacitate * (Tmin / v [i].timp);
sort (v + 1, v + n + 1, cmp);
int sum = 0;
while (Nrmin <= n && sum < m){
sum += v [Nrmin].capacitate;
Nrmin ++;
}Nrmin --;
fout << Tmin << " " << Nrmin;
return 0;
}