注意:
两个数组要动态生成长度(否则是0分)
sum的类型不能是Int(溢出)
#include <iostream>
#include<stdio.h>
#include<vector>
using namespace std;
struct S{
long y;
long v;
};
long n;
int a;
int b;
int main()
{
vector<S>aa;
vector<S>bb;
cin>>n>>a>>b;
int cnt1=0;
while(a--)
{
S ss;
cin>>ss.y>>ss.v;
aa.push_back(ss);
cnt1++;
}
int cnt2=0;
while(b--)
{
S ss;
cin>>ss.y>>ss.v;
bb.push_back(ss);
cnt2++;
}
long long sum=0;
int kk1=0;
int kk2=0;
while(cnt2!=kk2&&cnt1!=kk1)
{
if(aa[kk1].y==bb[kk2].y)
{
sum=sum+aa[kk1].v*bb[kk2].v;
kk1++;
kk2++;
}
else if(aa[kk1].y>bb[kk2].y)
{
kk2++;
}
else{
kk1++;
}
}
cout<<sum<<endl;
return 0;
}