Pagini recente » Cod sursa (job #1431814) | Monitorul de evaluare | Cod sursa (job #723707) | Cod sursa (job #728040) | Cod sursa (job #337115)
Cod sursa(job #337115)
#include <fstream>
#include <algorithm>
using namespace std;
#define MAX_N 100005
ifstream fin ("garaj.in");
ofstream fout("garaj.out");
const int Tmax = 6000;
struct gar
{
int c, t, g;
} V[MAX_N];
int N, logT;
long long K;
struct cmp
{
bool operator()(const gar &a, const gar &b) const
{
return a.g > b.g;
}
};
void citire()
{
fin >> N >> K;
for(int i = 1; i <= N; ++i)
{
fin >> V[i].c >> V[i].t;
V[i].t <<= 1;
}
for(logT = 1; logT <= Tmax; logT <<= 1);
}
int search(int k)
{
for(int i = 1; i <= N; ++i)
V[i].g = k/V[i].t*V[i].c;
sort(V+1, V+N+1, cmp());
long long cap = 0;
for(int i = 1; i <= N; ++i)
if((cap += V[i].g) >= K)
return i;
return 0;
}
void solve()
{
int i, lg;
for(i = Tmax, lg = logT; lg; lg >>= 1)
if(i - lg > 0 && search(i - lg))
i -= lg;
fout << i << " " << search(i) << "\n";
}
int main()
{
citire();
solve();
}