10170

#include <iostream>
#include <cstdio>

#define ul unsigned long long//double//long long

using namespace std;

int main()
{
	ul s,d,a,b;
	ul subtract;
	ul lw,hi,mid,res;
	while(scanf("%llu%llu",&s,&d)!=EOF)
	{
		if(d<=s)
		{
			printf("%llu\n",s);
			continue;
		}
		subtract=(s*(s-1))/2;
		lw=s;
		hi=s+d/s;
		res=-1;
		while(hi-lw>1)
		{
			mid=(lw+hi)/2;
			if(((mid*(mid+1))/2-subtract) <d)
			lw=mid+1;
			else if(((mid*(mid+1))/2-subtract)>d)
			hi=mid;
			else if(((mid*(mid+1))/2-subtract)==d)
			{
				res=mid;
				break;
			}
		}
		if(res!=-1)
		printf("%llu\n",res);
		else
		{
			//cout<<lw<<" "<<hi<<"\n";
			a=(hi*(hi+1))/2-subtract;
			b=(lw*(lw+1))/2-subtract;
			if(a>=d && b<d)
			printf("%llu\n",hi);
			else
			printf("%llu\n",lw);
		}
	}
	return 0;
}

 

Leave a Reply

Your email address will not be published. Required fields are marked *