原题链接:CSP 201812-2 小明放学
呵呵,,,做题的时候就想着,黄灯后面是红灯,红灯也要加上等待时间,这是个注意点,结果做着做着就忘了,然后代码交上去错,改不出来,想不出来哪里错了,然后,发现就是黄的那里没加等待红灯的时间,nmd,一开始看题就想到这里容易错了,还在脑子里提醒了自己,结果还是错???大无语,下次看题的时候提前把易错点在纸上写下来!!!
#include <bits/stdc++.h>
using namespace std;
#define ll long long
int main()
{
std::ios::sync_with_stdio(false);
ll r,y,g;
cin>>r>>y>>g;
ll rl=0,rr=r;//红
ll gl=r,gr=r+g;//绿
ll yl=r+g,yr=r+y+g;//黄
ll num=r+y+g;
int n;
cin>>n;
ll k,t,sum=0;
while(n--)
{
cin>>k>>t;
ll tmp=-1;
if(k==0)
{
sum+=t;
}
else if(k==1)//红
{
tmp=(rr-t+sum)%num;
}
else if(k==2)//黄
{
tmp=(yr-t+sum)%num;
}
else if(k==3)//绿
{
tmp=(gr-t+sum)%num;
}
if(rl<=tmp && tmp<rr)//红
{
sum+=(r-tmp);
}
else if(gl<=tmp && tmp<gr)//绿
{
continue;
}
else if(yl<=tmp && tmp<yr)//黄
{
sum+=(yr+r-tmp);
}
}
cout<<sum<<endl;
return 0;
}