czy从第一个车站到第二个车站,距离为8-5=3,因此付了3的费用。
czy再从第二个车站到第三个车站,距离为11-8=3,因此付了3的费用。
czy从第三个车站无法到达第四个车站,因此为-1。
【解题提示】
取尺法
n<=500,000,其余的数均在int范围内。
请使用long long。
为了防止读入与输出超时,这里给出了一份模板:
读入优化:
template<typename T>inline void read(T &cn)
{
char c;int sig = 1;
while(!isdigit(c = getchar()))if(c == '-')sig = -1;cn = c-48;
while(isdigit(c = getchar()))cn = cn*10+c-48;cn*=sig;
}
例子:read(x);//等价于cin>>x或scanf("%lld",&x)
输出优化:
template<typename T>inline void write(T cn)
{
if(!cn){putchar(48);putchar(' ');return;}
if(cn<0){putchar('-');cn = 0-cn;}
int wei = 0;T cm = 0;int cx = cn%10;cn/=10;
while(cn)cm = cm*10+cn%10,wei++,cn/=10;
while(wei--)putchar(cm%10+48),cm/=10;
putchar(cx+48);
putchar(' ');
}
例子:write(x);//等价于cout<<x<<" "或printf("%lld ",x),没有换行