Cod sursa(job #1126134)

Utilizator loginLogin Iustin Anca login Data 26 februarie 2014 21:26:47
Problema Garaj Scor 80
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.75 kb
# include <fstream>
# include <iostream>
# include <algorithm>
# define DIM 100003
# define MAX 2000000000
# define ll int
using namespace std;
int n, m, C[DIM], T[DIM];
ll t=MAX, N;

void read ()
{
	ifstream fin ("garaj.in");
	fin>>n>>m;
	for(int i=1;i<=n;++i) {
		fin>>C[i]>>T[i];
		T[i]*=2;
	}
}

void solve ()
{
	ll c;
	for(ll st = 1ll, dr = MAX, mij = (st+dr)>>1;st<=dr;mij=(st+dr)>>1) {
		c=0;
		for(int i=1;i<=n && c<m && mij>=(ll)T[i];++i)
			c+=mij/T[i]*C[i];
		if (c>=m) {
			dr = mij-1,
			t=min(mij, t);
		} else {
			st = mij+1;
		}
	}
	
	for(int i=1;i<=n;++i)
		T[i]=-t/T[i]*C[i];
		
	sort(T+1, T+n+1);
	c=0;
	for(N=0;N<n && c<m;++N) {
		c-=T[N+1];
	}
}

int main()
{
	read();
	solve();
	
	ofstream fout ("garaj.out");
	fout<<t<<" "<<N;
	
	return 0;
}