Pagini recente »
Istoria paginii runda/vaslui_cls10_16.02/clasament
|
Monitorul de evaluare
|
cel_mai_greu_concurs_luca_prunoiu
|
hlo_lmk_vs_9
|
Cod sursă (job #310844)
Cod sursă (job
#310844)
#include <cstdio>
using namespace std;
FILE *f, *g;
int rez;
int scvBuild, scvCost;
int scvCollect;
int target;
void readFile()
{
f = fopen("scv.in", "r");
fscanf(f, "%d%d%d%d", &scvCost, &scvBuild, &scvCollect, &target);
fclose(f);
}
void solve()
{
int cr = 0;
int scv = 1;
rez = 0;
while(cr < target)
{
int need = target - cr;
int get = scv * scvCollect;
int ritmCurent = need / get + ((need % get) != 0);
if(cr >= scvCost)
{
if(scvBuild > ritmCurent)
{
cr = target;
rez += ritmCurent;
}
else
{
int rest = need + scvCost - get * scvBuild;
get += scvCollect;
int scvAdd = scvBuild + rest / get + ((rest % get) != 0);
if(scvAdd < ritmCurent)
{
rez += scvBuild;
cr -= scvCost;
cr += scv * scvCollect * scvBuild;
scv ++;
}
else
{
cr = target;
rez += ritmCurent;
//rez ++, cr += scv * scvCollect;
}
}
}
else
{
int need = scvCost - cr;
int get = scv * scvCollect;
int ritmscv = need / get + ((need % get) != 0);
if(ritmCurent >= ritmscv)
{
rez += ritmscv;
cr += ritmscv * get;
}
else
{
rez += ritmCurent;
cr = target;
//rez ++, cr += scv * scvCollect;
}
}
}
}
void printFile()
{
g = fopen("scv.out", "w");
fprintf(g, "%d\n", rez);
fclose(g);
}
int main()
{
readFile();
solve();
printFile();
return 0;
}