为了解决谁是跑的最快的奶牛的长期争论,贝茜和艾希决定在农场中来一场赛跑。
两头奶牛在同一时间从同一地点出发,朝同一方向奔跑。
每个奶牛的奔跑过程都可以划分为若干段。
在每一段行程中,奶牛的奔跑速度相同。
例如,贝茜可能首先以  的速度奔跑 
 单位时间,然后以 
 的速度奔跑 
 单位时间。
贝茜和艾希的总跑步时间相同。
两头奶牛希望你帮助计算在她们的赛跑中,领头者的变化次数。
当上一次的领头者是  的情况下,如果 
 超过了 
,成为了领头者,那么领头者的变化就发生了。
例如,如果  是领头者,然后 
 超过了 
,这就算是一次领头者的变化。
如果  是领头者,然后 
 追上了 
 并与他齐头并进一段时间,最终 A 超过了 
,这也算是一次领头者的变化。
输入格式
 第一行包含两个整数  和 
,表示贝茜的奔跑过程可分为 
 段,艾希的奔跑过程可分为 
 段。
接下来  行,每行描述一段贝茜的奔跑过程,包含两个整数,分别表示贝茜的奔跑速度以及她以这个速度奔跑的时间(两个整数都在 
 范围内)。
接下来  行,每行描述一段艾希的奔跑过程,包含两个整数,分别表示艾希的奔跑速度以及她以这个速度奔跑的时间(两个整数都在 
 范围内)。
输出格式
 输出赛跑中领头者的变化次数。
数据范围
输入样例:
4 3
1 2
4 1
1 1
2 10
2 3
1 2
3 9输出样例:
2样例解释 时,艾希保持领先位置。
 时,贝茜追上艾希,并以相同速度奔跑一个单位时间。
随后贝茜提速,超过艾希(第一次领头者变化)。
短暂时间后,艾希提速,超过贝茜(第二次领头者变化)并保持领先至结束。
using namespace std;
typedef pair<int, int> PII;
const int N = 1010;
int n, m;
PII a[N], b[N];
int sa[N], sb[N];
int main(){
    
    cin >> n >> m;
    
    int tsum = 0;
    
    for(int i = 1; i <= n; i++) cin >> a[i].x >> a[i].y, sa[i] = sa[i-1]+a[i].y;
    for(int i = 1; i <= m; i++) cin >> b[i].x >> b[i].y, sb[i] = sb[i-1]+b[i].y;
    
    int t = 0, idx1 = 1, idx2 = 1;
    int sm1 = 0, sm2 = 0;
    int res = 0;
    int last_head = 0;
    while(t < sa[n]){
        
        int time;
        if(sa[idx1] < sb[idx2]) time = sa[idx1] - t;
        else time = sb[idx2] - t;
        t += time;
        sm1 += time * a[idx1].x;
        sm2 += time * b[idx2].x;
        int cur_head = 0;
        
        if(sm1 > sm2) cur_head = 1;
        else if(sm2 > sm1) cur_head = 2;
        
        if(last_head && cur_head && last_head != cur_head) res++;
        
        if(cur_head) last_head = cur_head;
        
        if(t >= sa[idx1]) idx1++;
        if(t >= sb[idx2]) idx2++;
    }
    
    cout << res << endl;
        
    return 0;
}                
                










