Cod sursa(job #1466483)

Utilizator enedumitruene dumitru enedumitru Data 29 iulie 2015 12:07:59
Problema Garaj Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.84 kb
#include<fstream>
#include<iostream>
#include<algorithm>
using namespace std;
ifstream f("garaj.in"); ofstream g("garaj.out");
const int maxn = 100003;
const int smax = 2000000000;
struct camion {int c,t,s;} v[maxn];
int N,M,sum,T=smax,sol,i;
inline bool mycomp(camion a,camion b)
{   return a.s>b.s;}
int main()
{   f>>N>>M;
    for(i=1;i<=N;++i) {f>>v[i].c>>v[i].t; v[i].t*=2;}
    int st=1,dr=smax,mid;
    while(st<=dr)
    {   mid=(st+dr)/2; sum=0;
        for(int i=1;i<=N&&sum<M;i++) sum+=mid/v[i].t*v[i].c;
        if(sum>=M)
        {   dr=mid-1;
            if(T>mid) T=mid;
        }
        else st=mid+1;
    }
    for(i=1;i<=N;++i) v[i].s=(T/v[i].t)*v[i].c;
    sort(v+1,v+N+1,mycomp);
    sum=0;
    for(sol=1; sol<=N && sum<M ; sol++) sum+=v[sol].s;
    sol--; g<<T<<" "<<sol<<'\n';
    g.close(); return 0;
}