Cod sursa(job #940827)

Utilizator BlackLordFMI Alex Oprea BlackLord Data 17 aprilie 2013 10:05:07
Problema Garaj Scor 90
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.73 kb
#include <fstream>
#include <algorithm>
using namespace std;
ifstream f("garaj.in");
ofstream g("garaj.out");
int n, m, i, j, p, u, t, v[100010], nrc;

struct caminon{
	int c, t;
} c[100010];

bool verif(const int &t){
	j=m;
	for(i=1; i<=n; i++)
	{
		j-=(t/(c[i].t<<1))*c[i].c;
		if(j<0)
			return 1;
	}
	return 0;
}

int main(){
    f>>n>>m;
    for(i=1; i<=n; i++)
		f>>c[i].c>>c[i].t;
	p=1;
	int mid;
	u=2*m;
	while(p<=u)
	{
		mid=p+(u-p)/2;
		if( verif(mid) )
			u=mid-1;
		else
			p=mid+1;
	}
	t=p;
	g<<t<<' ';
	for(i=1; i<=n; i++)
		v[i]=(t/(c[i].t<<1))*c[i].c;
	sort(v+1, v+n+1);
	nrc=0;
	j=m;
	for(i=n; i>0; i--)
	{
		j-=v[i];
		nrc++;
		if(j<0)
			break;
	}
	g<<nrc<<"\n";
    return 0;
}