#include <iostream>
using namespace std;
int main() {
auto sqr=[](int x){return x*x;};
auto sqrt=[sqr](int x){
auto center=[](int a,int b){return (a+b)>>1;};
int low=0<<(sizeof(x)*8/2);
int top=1<<(sizeof(x)*8/2);
cout<<"top = "<<top<<endl;
for(int i=0;i<32;i++){
cout<<"low = "<<low<<" top = "<<top<<endl;
int c=center(low,top);cout<<c<<endl;
(c*c<=x?low:top)=c;
if(sqr(c+0)<=x)if(sqr(c+1)>x)return c;
}
return -1;
};
cout<<"result = "<<sqrt(sqr(31000))<<endl;;
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKaW50IG1haW4oKSB7CglhdXRvIHNxcj1bXShpbnQgeCl7cmV0dXJuIHgqeDt9OwoJYXV0byBzcXJ0PVtzcXJdKGludCB4KXsKCSAgYXV0byBjZW50ZXI9W10oaW50IGEsaW50IGIpe3JldHVybiAoYStiKT4+MTt9OwoJICBpbnQgbG93PTA8PChzaXplb2YoeCkqOC8yKTsKCSAgaW50IHRvcD0xPDwoc2l6ZW9mKHgpKjgvMik7CgkgIGNvdXQ8PCJ0b3AgPSAiPDx0b3A8PGVuZGw7CgkgIGZvcihpbnQgaT0wO2k8MzI7aSsrKXsKCSAgCWNvdXQ8PCJsb3cgPSAiPDxsb3c8PCIgICAgIHRvcCA9ICI8PHRvcDw8ZW5kbDsKCSAgICBpbnQgYz1jZW50ZXIobG93LHRvcCk7Y291dDw8Yzw8ZW5kbDsKCSAgICAoYypjPD14P2xvdzp0b3ApPWM7CgkgICAgaWYoc3FyKGMrMCk8PXgpaWYoc3FyKGMrMSk+eClyZXR1cm4gYzsKCSAgfQoJICByZXR1cm4gLTE7Cgl9OwogICAgY291dDw8InJlc3VsdCA9ICI8PHNxcnQoc3FyKDMxMDAwKSk8PGVuZGw7OwoJcmV0dXJuIDA7Cn0=