一、题目描述
二、代码如下
#include<iostream>
#include<bits/stdc++.h>
using namespace std;
//定义结构体,存向量的点
struct Node{
long long index;
long long value;
};
int main()
{
long long n,a,b;
cin>>n>>a>>b;
Node A[a],B[b];
for(int i=0;i<a;i++)
{
cin>>A[i].index>>A[i].value;
}
for(int i=0;i<b;i++)
{
cin>>B[i].index>>B[i].value;
}
long long sum = 0;
//通过i和j来遍历两个向量
long long i = 0 , j = 0;
while(i<a && j<b)
{
//如果序号相等,进行乘法运算
if(A[i].index==B[j].index)
{
sum += A[i].value * B[j].value;
i++;
j++;
}
//如果A的序号大于B,则A向后移动一个
else if(A[i].index < B[j].index)
{
i++;
}
//如果B的序号大于A,则B向后移动一个
else if(A[i].index > B[j].index)
{
j++;
}
}
cout<<sum<<endl;
return 0;
}