只有第四个点没过
#include <iostream>
using namespace std;
struct run
{
long long s,t,m=0;
};
int main()
{
bool pd1,pd2;
long n,m,t1=0,t2=0,j1=0,j2=0,x1=0,x2=0,ans=0;
cin>>n>>m;
run sh[n],kc[m];
for(long long i=0;i<n;i++) cin>>sh[i].s>>sh[i].t;
for(long long i=0;i<m;i++) cin>>kc[i].s>>kc[i].t;
while(n--) t1+=sh[n].t;
while(m--) t2+=kc[m].t;
for(long long i=1;i<=(t1<t2?t2:t1);i++)
{
if(sh[j1].m<sh[j1].t)
{
x1+=sh[j1].s;
sh[j1].m++;
}
else
{
j1++;
x1+=sh[j1].s;
sh[j1].m++;
}
if(kc[j2].m<kc[j2].t)
{
x2+=kc[j2].s;
kc[j2].m++;
}
else
{
j2++;
x2+=kc[j2].s;
kc[j1].m++;
}
if(i==1)
{
if(x1<=x2) pd1=false;
else pd1=true;
}
else
{
if(x1<=x2) pd2=false;
else pd2=true;
if(pd1!=pd2&&x1!=x2) ans++;
else if (pd1!=pd2&&x1==x2)
{
pd2=pd1;
continue;
}
pd1=pd2;
}
}
cout<<ans;
return 0;
}