Cod sursa(job #3256255)

Utilizator dianatheadiana thea udristoiu dianathea Data 13 noiembrie 2024 21:58:42
Problema Garaj Scor 80
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.12 kb
#include <iostream>
#include <fstream>
#include <algorithm>



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

int verif(int mt,int t[],int c[],int n,int 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,m;
   fin>>n>>m;
   int c[n+1];
   int t[n+1];
   for(int i=1;i<=n;i++)
   {
       fin>>c[i]>>t[i];
   }
   int st=1;
   int dr=t[1] * 2 * ((m + c[1] - 1) / c[1]);
   int mint=0;
   while(st<=dr)
   {
       int mid=(st+dr)/2;
       if(verif(mid,t,c,n,m))
       {
           mint=mid;
           dr=mid-1;
       }
       else
       {
           st=mid+1;
       }
   }
   int minc=0;
   int 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;
}