#include<iostream>
using namespace std;
void swap(long long a,long long b);
int main()
{
long long a,b,c;
cin>>a>>b>>c;
//每盖一层AB消耗相同,
//为了方便就把值小的当作A
if(a>b) swap(a,b);
else if(a<b)
{
//把c全部补给A
if(a+c<b)
{
a=a+c;
c=0;
}//a+c>=b先把A补成和B一样多
else
{
c=c-(b-a);
a=b;
}
}
a+=c/2; b+=c/2;//平分剩余的C
long long l,r;
l=1,r=2000000;//二分法找层数mid
while(l<r)
{
long long mid=(l+r+1)/2;
double x;
x=(mid+1)*(mid*1.0)/2.0;
if(x<=a)
{
l=mid;
}
else r=mid-1;
}
cout<<l<<endl;
return 0;
}
void swap(long long a,long long b)
{
long long temp=a;
a=b;
b=temp;
}
能力有限 不知道再该怎么改了