注意数据范围,使用 long long。
#include <iostream>
#include <cstdio>
#include <vector>
using namespace std;
struct svec{
int indx,val;
};
vector<svec> u,v;
int main(){
int n,a,b;
scanf("%d%d%d",&n,&a,&b);
svec tmp;
while(a--){
scanf("%d%d",&tmp.indx,&tmp.val);
u.push_back(tmp);
}
while(b--){
scanf("%d%d",&tmp.indx,&tmp.val);
v.push_back(tmp);
}
int i=0,j=0;
long long ans=0;
while(i<u.size()&&j<v.size()){
if(u[i].indx<v[j].indx)
i++;
else if(u[i].indx>v[j].indx)
j++;
else{
ans+=(long long)u[i].val*v[j].val;
i++;j++;
}
}
printf("%lld",ans);
return 0;
}