测评会员优惠活动进行中 · 开通 VIP,有效期内测评不限次 VIP 优惠中 · 测评不限次 立即查看

A22786. 维修任务

填空题 较易

题目描述

维修任务

题目描述

在一条商业街上,有100个店铺,店铺从左到右编号为1到100。工人从店铺x移动到y发生的移动距离为|y - x|。

现在需要完成n个修理任务。其中第i个任务要求工人移动到店铺 ai,报修任务分两类,用L表示任务分配给小李,用R表示任务分配给小任,必须按照报修的顺序来完成这些任务。

请计算,完成所有修理任务后,两位工人的总移动的总距离。工人最开始的位置可以按照最理想的情况安排。

输入格式

第一行:一个整数n,表示搬运次数;

接下来n行,每行一个整数ai表示商店位置,一个字符Si表示哪位工人完成。

输出格式

输出所有任务完成时的最小总距离。

输入样例#1

4
3 L
6 R
9 L
2 R

输出样例#1

10

输入样例#2

3
2 L
2 L
99 L

输出样例#2

97

输入样例#3

8
22 L
75 L
26 R
45 R
72 R
81 R
47 L
29 L

输出样例#3

154

参考答案

#include <iostream> int main() { int n , a , l = -1, r = -1; std::cin >> n; int ans = 0; for (int i = 0; i < n; ++i) { int a; char c; std::cin >> a >> c; if (c == 'L') { if (l != -1) { int dis = a - l; if(dis < 0) dis = -dis; ans += dis; } l = a; } else { if (r != -1) { int dis = a - r; if(dis < 0) dis = -dis; ans += dis; } r = a; } } std::cout << ans ; return 0; }
上一题 下一题