Cod sursă (job #306349)

Utilizator avatar nekirebus Alexandru Nechifor nekirebus IP ascuns
Problemă SCV (clasele 9-10) Compilator cpp | 0,93 kb
Rundă Arhiva de probleme Status evaluat
Dată 23 mai 2017 21:09:57 Scor 100
#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;
}