错了一个点,rt。
#include<bits/stdc++.h>
using namespace std;
#define int long long
const int maxn=3e5+10;
int ll,n1,n2;
int v[3][maxn],l[3][maxn];
int s1[maxn],s2[maxn];
signed main(){
cin >> ll >> n1 >> n2;
for(int i=1;i<=n1;++i){cin >> v[1][i] >> l[1][i];s1[i]=s1[i-1]+l[1][i];}
for(int i=1;i<=n2;++i){cin >> v[2][i] >> l[2][i];s2[i]=s2[i-1]+l[2][i];}
int idx=1;s2[n2+1]=s2[n2];int ans=0;
for(int i=1;i<=n1;++i){
while(idx>=1 && s2[idx]>=s1[i-1]+1)idx--;
while(idx<=n2 && s1[i-1]+1>s2[idx])idx++;
while(idx<=n2 && s1[i]>s2[idx-1]+1){
if(v[1][i]==v[2][idx]){
ans+=(min(s1[i],s2[idx])-max(s2[idx-1]+1,s1[i-1]+1)+1);
}
idx++;
}
}
cout << ans << endl;
return 0;
}