解题思路
题目的意思就是计算一下上学路上总共需要花费的时间
k = 0,表示经过一段路花费时间t,直接累加t
k = 1, 表示红灯,加上等待时间t,变绿灯后可通行
k = 2,表示黄灯,加上黄灯等待t时间后,还需加上红灯等待时间r,变绿灯后可通行
k = 3,绿灯可直接通过,无需等待t
代码实现
#include <iostream>
#include <cstring>
#include <algorithm>
using namespace std;
int main()
{
int r, y, g;
cin >> r >> y >> g;
int n;
cin >> n;
int res = 0;
while (n --)
{
int k, t;
cin >> k >> t;
if (!k) res += t; //k == 0,表示走路路段花时t
else
{
if (k == 3) continue; //k == 3,绿灯可直接通过,无需等待
if (k == 1) res += t; //k == 1,红灯,加上等待时间t变绿灯后可通行
else res += (r + t); //k == 2,黄灯,加上黄灯等待t时间后,还需加上红灯等待时间r,变绿灯后可通行
}
}
cout << res;
return 0;
}