Pagini recente » Cod sursa (job #1992705) | Cod sursa (job #1864879) | Cod sursa (job #439886) | Cod sursa (job #1127602) | Cod sursa (job #2540696)
#include <bits/stdc++.h>
#define nmax 1024
#define ll long long
using namespace std;
ifstream in("progresie.in");
ofstream out("progresie.out");
ll n,t,r;
struct line{
ll x;
ll poz;
};
line ini;
ll value(line a){
return a.x*(a.x-1)+a.poz;
}
line nextLine(ll val){
ll x = sqrt(val);
if(x*(x+1)<val){
return {x+1,val-x*(x+1)};
}
if(x*(x-1)<val){
return {x,val-x*(x-1)};
}
if((x-1)*(x-2)<val){
return {x-1,val-(x-1)*(x-2)};
}
}
bool getNextLine(int val){
line aux = ini;
for(ll i=1; i<n; i++){
aux = nextLine(value(aux)+val);
if(aux.poz>aux.x){
line newLine = nextLine((value({aux.x+1,1}))-value(aux)+value(ini));
if(newLine.poz>newLine.x){
ini = {newLine.x+1,1};
}
else{
ini = newLine;
}
return false;
}
}
return true;
}
void solve()
{
in >> n >> r;
ini = {1,1};
for(;!getNextLine(r););
out << value(ini) << '\n';
}
int main(){
in >> t;
while(t--){
solve();
}
}