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;
}
上一题
下一题