Cod sursa(job #3225342)

Utilizator andreiqwerBesu-Roca Andrei andreiqwer Data 17 aprilie 2024 13:29:11
Problema Garaj Scor 60
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.83 kb
#include <fstream>
#include <algorithm>

using namespace std;

ifstream cin("garaj.in");
ofstream cout("garaj.out");

#define ll long long
#define nmax 100000

pair<int, int> camion[nmax+1];
int n, sticnt;

int main()
{
	cin.tie(0);
	ios_base::sync_with_stdio(0);

	cin>>n>>sticnt;
	for(int i=1; i<=n; i++)
		cin>>camion[i].first>>camion[i].second;

	ll st=0, dr=sticnt*1000;
	while(st<=dr)
	{
		ll mij=(st+dr)/2;
		ll stiduse=0;
		for(int i=1; i<=n && stiduse<sticnt; i++)
			stiduse+=mij/(2*camion[i].second)*camion[i].first;

		if(stiduse<sticnt)
			st=mij+1;
		else
			dr=mij-1;
	}

	for(int i=1; i<=n; i++)
		camion[i].first=st/(2*camion[i].second)*camion[i].first;
	sort(camion+1, camion+n+1, greater<pair<int, int>>());

	int cnt=0, sum=0;
	for(int i=1; i<=n && sum<sticnt; i++)
	{
		sum+=camion[i].first;
		cnt++;
	}

	cout<<st<<' '<<cnt;
}