#include <iostream>
using namespace std;
int main(){
int n = 0,g = 0,r = 0,q = 0;
cin>>n>>g>>r;
int arr_dt [n+1]; //输入每个路段时间
for(int i = 0;i<n+1;i++){
cin>>arr_dt[i];
}
cin>>q;
int arr[q];
int time= 0; //输入每个车离开时间
for(int i = 0;i<q;i++){
cin>>time;
for(int j = 0;j<n;j++){
time +=arr_dt[j];
if((time)%(g+r)>=g ){ //判断是否经过是绿灯
time=(time/(g+r)+1)*(g+r);
}
arr[i]=time+arr_dt[n]; //最后一段路没有红绿灯,但要走
}
}
for(int i = 0;i<q;i++){ //为了输出格式
cout<<arr[i]<<" ";
}
return 0;
}
本题主要思路是把红灯和绿灯捆绑在一起,使题目变的简单
因为当车子经过红绿灯时,绿灯不停,花费的时间就是车子走过路程的时间,但如果经过时是红灯就要停下,等到红灯结束