解题思路:
算法标签:模拟
纯粹模拟一下
代码:
// TSWorld
#include <iostream>
#include <cstdlib>
#include <cstdio>
#include <cstring>
#include <vector>
using namespace std;
const int N = 500005;
struct Node {
int index;
int value;
}u[N],v[N];
int main()
{
long long sum = 0;
int a = 0,b = 0,n = 0;
int index = 0,value = 0;
int pa = 1,pb = 1;
cin>>n>>a>>b;
for(int i = 1;i <= a;i++)
{
scanf("%d%d",&index,&value);
u[i].index = index;
u[i].value = value;
}
for(int i = 1;i <= b;i++)
{
scanf("%d%d",&index,&value);
v[i].index = index;
v[i].value = value;
}
while((pa <= a)&&(pb <= b)) {
if(u[pa].index == v[pb].index) {
sum += u[pa].value*v[pb].value;
pa++;
pb++;
}
else if(u[pa].index < v[pb].index)
pa++;
else
pb++;
}
cout<<sum;
return 0;
}