//用longlong就过了.....用int只有60
#include <iostream>
using namespace std;
int main()
{
long long r, y, g;
cin >> r >> y >> g;
long long s = r+y+g;
int n;
cin >> n;
long long sum = 0;
long long ta[n+5], tb[n+5];
for(int i=0; i<n; i++){
cin >> ta[i] >> tb[i];
}
for(int i=0; i<n; i++){
//on road
if((ta[i] == 0)){
sum += tb[i];
// cout << sum << endl;
}
//yellow light
else if(ta[i] == 2){
// cout << sum << endl;
int sum1 = sum%s;
sum1 += (g + y -tb[i]);
sum1 %= s;
// cout << "sum1:" << sum1 << endl;
if(sum1 >=0 && sum1 <g);
else sum += (s-sum1);
}
//red light
else if(ta[i] == 1){
// cout << sum << endl;
int sum1 = sum%s;
sum1 += (s-tb[i]);
sum1 %= s;
// cout << "sum1:" << sum1 << endl;
if(sum1 >=0 && sum1 <g);
else sum += (s-sum1);
}
else if(ta[i] == 3){
// cout << sum << endl;
int sum1 = sum%s;
sum1 += (g-tb[i]);
sum1 %= s;
// cout << "sum1:" << sum1 << endl;
int tmp = sum1-tb[i]-r-y;
if(sum1 >=0 && sum1 <g);
else sum += (s-sum1);
}
// cout << sum << endl;
}
cout << sum << endl;
return 0;
}
本文介绍了一种使用C++实现的交通信号灯模拟算法,通过分析红绿黄三种信号灯状态,结合道路通行时间,计算车辆通过路口的总时间。算法采用longlong数据类型确保大数值运算的准确性。
6130

被折叠的 条评论
为什么被折叠?



