I didn't get logic for these to lines
- f |= (ch == '-')
- x = (x << 1) + (x << 3) + (ch ^ 48);
template<class T>void read(T& x)
{
x = 0; int f = 0; char ch = getchar();
while (ch < '0' || ch>'9') { f |= (ch == '-'); ch = getchar(); }
while (ch >= '0' && ch <= '9') { x = (x << 1) + (x << 3) + (ch ^ 48); ch = getchar(); }
x = f ? -x : x;
return;
}
if (ch == '-') f = true;
x = x * 10 + (ch - '0');
Thanks bro it helped me
but why they are selecting only '-'(symbol) for 1st statement if(ch =='-')f=true; might be some seprator i guess
x = f ? -x : x;
It is to check if its a negative number.