#include <iostream>
using namespace std;
typedef struct {
int index;
long long value;
} V;
int main()
{
int n, a, b;
cin >> n >> a >> b;
V *vector_a = new V[a];
V *vector_b = new V[b];
for(int i = 0; i < a; i++)
cin >> vector_a[i].index >> vector_a[i].value;
for(int i = 0; i < b; i++)
cin >> vector_b[i].index >> vector_b[i].value;
long long result = 0;
for(int i = 0, j = 0; ; )
if(i == a || j == b) break;
else if(vector_a[i].index == vector_b[j].index) {
result += vector_a[i].value * vector_b[j].value;
i++;
j++;
}
else if(vector_a[i].index < vector_b[j].index)
i++;
else if(vector_a[i].index > vector_b[j].index)
j++;
cout << result;
return 0;
}
【题解】CCF CSP 202006-2 —— 稀疏向量
最新推荐文章于 2024-06-12 18:28:23 发布