AcWing 3268. 小明放学csp15(2)
原题链接
简单
作者:
YAX_AC
,
2024-11-25 17:38:01
,
所有人可见
,
阅读 2
#include<iostream>
#include<algorithm>
#include<cstring>
using namespace std;
typedef long long LL;
int r,y,g;
int n;
//[0,r] [r,r+g] [r+g][r+g+y]
//红灯 绿灯 黄灯
int main()
{
cin>>r>>y>>g;
cin>>n;
LL ans = 0;
while(n--)
{
LL k,t;
cin>>k>>t;
if(k==0) ans+=t;
else
{
if(k==1) t = r-t;
else if(k==2) t = r+y+g-t;//算出当前的位置时间,t是红灯或者黄灯,绿灯的结束时间,不是他当前的位置时间
else t = r+g-t;
t+=ans;
t%=r+y+g;
if(t<r) ans += r-t;//等红灯
else if(t>=r+g) ans+= r+g+y-t+r;//等黄灯还要等红灯
}
}
cout<<ans;
return 0;
}