Pagini recente »
Istoria paginii utilizator/oana_patricia
|
Diferențe pentru runda/oji-2023-antrenament-ffa între reviziile 21 și 22
|
Istoria paginii runda/un_concurs_pt_oricine
|
Diferențe pentru runda/oji-2023-antrenament-ffa între reviziile 45 și 46
|
Cod sursă (job #819647)
Cod sursă (job
#819647)
#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;
}