Cod sursa(job #1250270)

Utilizator simaghitaSima Gheorghe Eugen simaghita Data 27 octombrie 2014 22:44:29
Problema Transport Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.98 kb
#include <iostream>
#include<fstream>
using namespace std;
int n,k,p;
void citire()
{
    ifstream fin("proc.in");
    fin>>n>>k>>p;
    fin.close();
}
int verif(long long timp)
{
    long long nrprocese=0,proctimp1=0;
    int i;
    for(i=1;i<=p;i++)
    {

        nrprocese+=(timp/i)/2;
        proctimp1+=(timp/i) % 2;
    }
    int proc=n-k;
    if(nrprocese >= proc && (nrprocese-proc)*2+proctimp1 >= k) return 1;
    else return 0;
}
long long cautareTimp(long long st, long long dr)
{
    long long mij,rasp=0;
    while(st<=dr)
    {
        mij=(st+dr)/2;
        if(verif(mij))
        {
            dr=mij-1;
            rasp=mij;
        }
        else st=mij+1;
    }
    return rasp;

}
void afisare()
{
    long long Tmin;
    long long maxim=1LL*k*p + 1LL*(n-k)*p*2;
    Tmin=cautareTimp(1, maxim);
    ofstream fout("proc.out");
    fout<<Tmin<<"\n";
    fout.close();
}
int main()
{

    citire();
    afisare();
    return 0;
}