Cod sursa(job #1080351)

Utilizator mihai995mihai995 mihai995 Data 12 ianuarie 2014 14:56:08
Problema Progresie Scor 0
Compilator cpp Status done
Runda Arhiva ICPC Marime 1 kb
#include <fstream>
#include <cmath>
using namespace std;

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

long long properStart(long long label, int nr, long long ratie){
    long long start = label * (label - 1) + 1, poz = start, maxIncrement = label - 1, k, inc;
    while (nr--){
        k = ceil( sqrt(poz) );
        inc = k * (k - 1) - poz + 1;

        if (inc > 0){
            poz += inc;
            start += inc;
            maxIncrement -= inc;
            if (maxIncrement < 0)
                return -1;
        }

        maxIncrement = min(maxIncrement, k * k - poz);
        poz += ratie;
    }
    return start;
}

long long compute(int nr, long long ratie){
    long long start = -1;

    for (long long k = 1 ; start == -1 ; k++)
        start = properStart(k, nr, ratie);

    return start;
}

int main(){
    int times, n, r;
    in >> times;
    while (times--){
        in >> n >> r;
        out << compute(n, r) << "\n";
    }
    return 0;
}