#include <bits/stdc++.h>
using namespace std ;
int Calculate(int , int , int , int , int , int ) ;
int turn(int) ;
int arr[111111][2] ;
int main(){
int n , r , y , g ;
cin >> r >> y >> g ;
cin >> n ;
for (int i = 0 ; i < n ; i++) {
for (int j = 0; j < 2 ; j++) {
cin >> arr[i][j] ;
}
}
int sum = 0 ;
for (int i = 0; i < n ; i++) {
if (arr[i][0] == 0){
sum += arr[i][1] ;
}else {
sum = Calculate(arr[i][1] , sum , arr[i][0] , r , y , g ) ;
}
}
cout << sum ;
return 0 ;
}
int Calculate(int count , int sum , int value ,int r , int y , int g){
int t = sum - count ;
int flag ;
if(value == 1){
flag = 0 ;
}else if(value == 2) {
flag = 1 ;
}else {
flag = 2 ;
}
if(t > 0){
flag = turn(flag) ;
while(t > 0) {
if (t > r && flag == 0) {
t -= r ;
flag = 2;
} else if (t > y && flag == 1) {
t -= y;
flag = 0;
} else if (t > g && flag == 2) {
t -= g ;
flag = 1;
} else {
if(flag == 0){
sum = sum + r - t ;
}else if(flag == 1){
sum = sum + r + y - t ;
}
break ;
}
}
}else{
if(flag == 0){
sum += abs(t) ;
}else if(flag == 1){
sum += abs(t) + r ;
}
}
return sum ;
}
// 0:红灯 1:黄灯 2:绿灯
int turn(int flag){
if (flag == 0){
flag = 2 ;
}else if(flag == 1){
flag = 0 ;
}else if(flag == 2){
flag = 1 ;
}
return flag ;
}
题目是什么,int arr[111111][2] ; 这里限制了最大大小。看下 sum 有没有溢出,算法有没有超时