Cod sursa(job #2564073)

Utilizator alexradu04Radu Alexandru alexradu04 Data 1 martie 2020 17:30:28
Problema Progresie Scor 100
Compilator cpp-64 Status done
Runda Arhiva ICPC Marime 0.97 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;
}