注意开 LL
还有注意灯的循环顺序和输入顺序不同,循环顺序为红绿黄红绿黄(AC代码中截取绿黄红部分,易于判断)
输入顺序为红黄绿
//循环绿黄红 int main() { ll a,b,c;//红黄绿 rd(a),rd(b),rd(c); int n;rd(n); ll sum=0; for(int i=0;i<n;++i) { int x;ll y;rd(x),rd(y); if(x==0) sum+=y; else { ll ntim; if(x==1) ntim=a-y+b+c; else if(x==2) ntim=b-y+c; else ntim=c-y; ntim+=sum; ntim%=(a+b+c); if(ntim>=c) sum+=(a+b+c-ntim); } } printf("%lld\n",sum); //stop; return (0 ^ _ ^ 0); }