结果需要用long long,不然只能得60分
#include <iostream>
#include <cstring>
using namespace std;
int main()
{
int type = 0;
int number = 0;
int r, y, g;
cin >> r >> y >> g;
int count;
cin >> count;
long long sum = 0;
for (int i = 0; i < count; i++)
{
cin >> type >> number;
int time = 0;
if (type == 0)
sum += number;
else if (type == 1)
{
if (sum <= number)
sum = number;
else
{
int temp = sum % (r + y + g);
if (temp < number)
{
time = number - temp;
}
else
{
if (temp - number >= g)
{
if (temp - number - g <= y)
time = y - (temp - number - g) + r;
else if (temp - number - g >= y && temp - number - g - y <= r)
time = r - (temp - number - g - y);
}
}
sum += time;
}
}
else if (type == 2)
{
if (sum <= number)
sum = sum + number - sum + r;
else
{
int temp = sum % (r + y + g);
if (temp <= number)
{
time = number - temp + r;
}
else
{
if (temp - number >= r)
{
if (temp - number - r >= g && temp - number - r - g <= y)
time = y - (temp - number - r - g) + r;
}
else
time = r - (temp - number);
}
}
sum += time;
}
else if (type == 3)
{
if (sum >= number)
{
int temp = sum % (r + y + g);
if (temp < number)
{
}
else
{
if (temp - number <= y)
{
//cout<<1;
time = y - (temp - number) + r;
}
else
{
if (temp - number - y <= r)
{
time = r - (temp - number - y);
}
}
}
}
sum += time;
}
//cout<<sum<<endl;
}
cout << sum << endl;
return 0;
}