Cod sursa(job #1606687)

Utilizator BaweeLazar Vlad Bawee Data 20 februarie 2016 14:22:56
Problema Progresie Scor 0
Compilator cpp Status done
Runda Arhiva ICPC Marime 1.28 kb
#include <fstream>
#include <cmath>

using namespace std;

ifstream f("progresie.in");
ofstream g("progresie.out");


int t, n, r, i, isOk, block, cand, margin, where, myStart, myEnd, goodStart, goodEnd;

int main() {

    f >> t;
    for (; t; t--) {
        f >> n >> r;

        for (block = 1;; block++)
        {
            cand = block * (block - 1) + 1;
            margin = block - 1;
            isOk = 1;

            for(i = 1; i < n; i++)
            {
                myStart = cand + r * i;
                myEnd = myStart + margin;

                where = 1 + (int)sqrt(myStart - 1);

                goodStart = where * (where - 1) + 1;
                goodEnd = where * where;

                if(myEnd < goodStart)
                {
                    isOk = 0;
                    break;
                }

                if (myStart < goodStart)
                {
                    margin -= goodStart - myStart;
                    cand += goodStart - myStart;
                }
                else if (myEnd > goodEnd)
                    margin -= myEnd - goodEnd;
            }

            if(isOk)
            {
                g << cand << '\n';
                break;
            }
        }
    }

    return 0;
}