Cod sursa(job #1369136)

Utilizator alex_HarryBabalau Alexandru alex_Harry Data 2 martie 2015 22:08:27
Problema Garaj Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.01 kb
#include <fstream>
#include <algorithm>
using namespace std;
ifstream f("garaj.in");
ofstream g("garaj.out");
int N,M,C[100005],T[100005],result;
void Read()
{
    f>>N>>M;
    for(int i=1;i<=N;i++)
        f>>C[i]>>T[i];
}

bool Check(int time)
{
    long long res=0;
    for(int i=1;i<=N;i++)
        res+=(time/(2*T[i]))*C[i];
    return res>=M;
}

void binSearch()
{
    int left=1,right=1000000000,mid,sol;
    while(left<=right)
    {
        mid=(left+right)/2;
        if(Check(mid)==0)
            left=mid+1;
        else
        {
            right=mid-1;
            sol=mid;
        }
    }
    result=sol;
    g<<sol<<" ";
}

void Truck()
{
    for(int i=1;i<=N;i++)
        T[i]=(result/(2*T[i]))*C[i];
    sort(T+1,T+N+1);
    long long sum=0;
    for(int i=N;i>=1;i--)
    {
        sum+=T[i];
        if(sum>=M)
        {
            g<<N-i+1<<"\n";
            break;
        }
    }
}
int main()
{
    Read();
    binSearch();
    Truck();
    return 0;
}