板子不解释
//适用于正负整数
template <class T>
inline bool scan_d(T &ret)
{char c; int sgn;if(c=getchar(),c==EOF) return 0; //EOFwhile(c!='−'&&(c<'0'||c>'9')) c=getchar();sgn=(c=='−')?−1:1;ret=(c=='−')?0:(c−'0');while(c=getchar(),c>='0'&&c<='9') ret=ret*10+(c−'0');ret*=sgn;return 1;
}
inline void out(int x)
{if(x>9) out(x/10);putchar(x%10+'0');
}
//正负数
template <class T>
bool scan_d(T &ret)
{char c; int sgn; T bit = 0.1;if (c=getchar(), c==EOF) {return 0;}while (c! = '-' && c != '.' && (c < '0' || c > '9')) {c = getchar();}sgn = (c == '-') ? -1 : 1;ret = (c == '-') ? 0 : (c - '0');while (c = getchar(), c >= '0' && c <= '9'){ret = ret * 10 + (c - '0');}if (c == ' ' || c == '\n'){ret *= sgn;return 1;}while (c = getchar(), c >= '0' && c <= '9'){ret += (c - '0') * bit, bit /= 10;}ret *= sgn;return 1;
}template <class T>
inline void print_d(int x)
{if (x > 9){print_d(x / 10);}putchar(x % 10 + '0');
}