Cod sursa(job #2523898)

Utilizator dariusandreicotaeCotae Darius Andrei dariusandreicotae Data 14 ianuarie 2020 20:58:55
Problema Progresie Scor 100
Compilator cpp-64 Status done
Runda Arhiva ICPC Marime 0.86 kb
#include <bits/stdc++.h>

using namespace std;

ifstream fin ("progresie.in");
ofstream fout ("progresie.out");

long long solve(int n, int r) {
  int j;
  long long start, aux, ok, st, dr, sti, dri;
  for(int i = 0; ; i++) {
    start = 1LL * i * (i + 1) + 1;
    aux = i;
    ok = 1;
    for(int k = 1; k < n; k++) {
      st = start + 1LL * k * r;
      dr = st + aux;
      j = (int)sqrt(st - 1);
      sti = 1LL * j * (j + 1) + 1;
      dri = 1LL * (j + 1) * (j + 1);
      if (dr < sti){
        ok = 0;
        break;
      }
      if (st < sti){
        start += sti - st;
        aux -= sti - st;
      }
      else if (dr > dri)
        aux -= dr - dri;
      }
    if (ok)
      return start;
  }
}

int main()
{
  int n, r, t;
  fin >> t;
  while(t--) {
    fin >> n >> r;
    fout << solve(n, r) << "\n";
  }
  return 0;
}