Cod sursa(job #3256256)

Utilizator dianatheadiana thea udristoiu dianathea Data 13 noiembrie 2024 22:04:26
Problema Garaj Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.21 kb
#include <iostream>
#include <fstream>
#include <algorithm>



using namespace std;
ifstream fin("garaj.in");
ofstream fout("garaj.out");

int verif(long long mt,long long t[],long long c[],int n,long long sticle)
{
   for(int i=1;i<=n;i++)
   {
       sticle-=c[i]*(mt/(t[i]*2));
       if(sticle<=0)
       {
           return 1;
       }
   }

    return 0;
}


int main()
{
   int n;
   long long m;
   fin>>n>>m;
   long long c[n+1];
   long long t[n+1];
   for(int i=1;i<=n;i++)
   {
       fin>>c[i]>>t[i];
   }
   long long st=1;
   long long dr=t[1] * 2 * ((m + c[1] - 1) / c[1]);
   long long mint=0;
   while(st<=dr)
   {
       long long mid=(st+dr)/2;
       if(verif(mid,t,c,n,m))
       {
           mint=mid;
           dr=mid-1;
       }
       else
       {
           st=mid+1;
       }
   }
   long long minc=0;
   long long v[n+1];
   for(int i=1;i<=n;i++)
   {
       v[i]= (mint / (t[i] * 2)) * c[i];
   }
   sort(v+1,v+n+1,greater <int>());
   for(int i=1;i<=n;i++)
   {
       if(m>0)
       {
           m-=v[i];
           minc++;
       }
       else
       {
           break;
       }
   }
   fout<<mint<<" "<<minc;

    return 0;
}