Cod sursă (job #819647)

Utilizator avatar mihaigeorgescu Georgescu Mihai mihaigeorgescu IP ascuns
Problemă SCV (clasele 9-10) Compilator cpp-32 | 1,23 kb
Rundă antrenament1 Status evaluat
Dată 9 apr. 2025 10:50:53 Scor 40
#include <fstream>

using namespace std;
ifstream fcin("scv.in");
ofstream fout("scv.out");
int c,m,t,x;
inline int nrzile(int fin, int start, int ratie)
{
    if((fin-start)%ratie==0)
        return (fin-start)/ratie;
    return (fin-start)/ratie+1;
}
inline int f(int val)
{
    int r=m,s=0, ok=0, poz=-1;
    for(int i=0; i<val; i++)
    {
        if(poz==i)
        {
            r+=m;
            ok=0;
        }
        s+=r;
        if(s>=x) return 1;
        if(s>=c && ok==0)
        {
            int nrz=t;
            int sum=(s-c+r*t);
            if(nrzile(x,s,r) > nrz+nrzile(x, sum, r+m))
            {
                s-=c;
                poz=i+t+1;
                ok=1;
            }
            else
            {
                if(nrzile(x,s,r)+i<val)
                    return 1;
                else
                    return 0;
            }
        }
    }
    return 0;
}
int main()
{
    fcin>>c>>t>>m>>x;
    int st=1, dr=1e9, sol=-1;
    while(st<=dr)
    {
        int mij=(st+dr)/2;
        if(f(mij))
        {
            dr=mij-1;
            sol=mij;
        }
        else
        {
            st=mij+1;
        }
    }
    fout<<sol;
    return 0;
}