# [Usaco2013 Feb]Taxi

Description
Bessie is running a taxi service for the other cows on the farm. The cows have been gathering at different locations along a fence of length M(1<=M<=1,000,000,000)$M (1 <= M <= 1,000,000,000)$. Unfortunately, they have grown bored with their current locations and each wish to go somewhere else along the fence. Bessie must pick up each of her friends at their starting positions and drive them to their destinations. Bessie’s car is small so she can only transport one cow in her car at a time. Cows can enter and exit the car instantaneously. To save gas, Bessie would like to minimize the amount she has to drive. Given the starting and ending positions of each of the N$N$ cows (1<=N<=100,000)$(1 <= N <= 100,000)$, determine the least amount of driving Bessie has to do. Bessie realizes that to save the most gas she may need to occasionally drop a cow off at a position other than her destination. Bessie starts at the leftmost point of the fence, position 0, and must finish her journey at the rightmost point on the fence, position M$M$.
Bessie在农场上为其他奶牛提供出租车服务。这些奶牛已经在沿着长度为M(1<=M<=1,000,000,000)$M(1<= M <= 1,000,000,000)$的栅栏上不同的地点聚集等候。不幸的是，他们已经厌倦了他们当前所在的位置并且每只奶牛都想要沿着栅栏去别的地方走走。 Bessie必须赶到这些奶牛的起始位置，并把他们带到它们的目的地。Bessie的车很小，所以她只能一次只能搭载一头奶牛。奶牛可以在同一时刻完成上车和下车。

Bessie的起点是围栏的最左端，位置记为0。终点在篱笆的最右边，位置记为M$M$

Input
Line 1: N$N$ and M$M$ separated by a space.
Lines 2..1+N$1+N$: The (i+1)$(i+1)$th line contains two space separated integers,si$s_i$ and ti(0<=si,ti<=M)$t_i (0 <= s_i, t_i <= M)$, indicating the starting position and destination position of the ith cow.

Output
Line 1: A single integer indicating the total amount of driving Bessie must do. Note that the result may not fit into a 32 bit integer.

Sample Input
2 10
0 9
6 5

INPUT DETAILS
There are two cows waiting to be transported along a fence of length 10. The first cow wants to go from position 0 (where Bessie starts) to position 9. The second cow wishes to go from position 6 to position 5.

Sample Output
12

OUTPUT DETAILS
Bessie picks up the first cow at position 0 and drives to position 6. There she drops off the first cow, delivers the second cow to her destination and returns to pick up the first cow. She drops off the first cow and then drives the remainder of the way to the right side of the fence.

HINT

Source
Gold

#include <cstdio>
#include <cmath>
#include <algorithm>

const int maxn=100000;

int n,m,s[maxn+10],t[maxn+10];
long long ans;

const bool cmp(int a,int b)
{
return a>b;
}

int main()
{
scanf("%d%d",&n,&m);
for(int i=1; i<=n; i++)
{
scanf("%d%d",&s[i],&t[i]);
ans+=abs(t[i]-s[i]);
}
s[n+1]=m;
t[n+1]=0;
std::sort(s+1,s+n+2);
std::sort(t+1,t+n+2);
for(int i=1; i<=n+1; i++)
{
ans+=abs(t[i]-s[i]);
}
printf("%lld\n",ans);
return 0;
}

©️2019 CSDN 皮肤主题: 编程工作室 设计师: CSDN官方博客