Pagini recente »
Istoria paginii runda/antrenament111
|
Istoria paginii utilizator/ovidiu_cristina
|
Istoria paginii utilizator/mihaigeorgescu
|
Istoria paginii runda/min_1/clasament
|
Cod sursă (job #306349)
Cod sursă (job
#306349)
#include <cstdio>
using namespace std;
FILE* in = fopen("scv.in", "r");
FILE* out = fopen("scv.out", "w");
int target, mining, buildc, buildt;
int bank = 0, n = 1, t = 0;
int divceil(int a, int b) {
int answer = a / b;
if(a%b != 0)
answer++;
return answer;
}
int main() {
fscanf(in, "%d%d%d%d", &buildc, &buildt, &mining, &target);
// fprintf(out, "%d %d %d %d\n", target, mining, buildc, buildt);
int tprofit = buildt + divceil(buildc, mining);
int tfinish = divceil(target, n * mining);
while(tprofit < tfinish) {
if(buildc <= bank) {
t += buildt;
target -= buildt * n * mining - buildc;
bank += buildt * n * mining - buildc;
n++;
} else {
int deltat = divceil(buildc - bank, n * mining);
t += deltat;
target -= deltat * n * mining;
bank += deltat * n * mining;
}
tfinish = divceil(target, n * mining);
}
fprintf(out, "%d\n", t+tfinish);
return 0;
}