60分 解法
#include<stdio.h>
#include<string.h>
int main(){
int n, a, b;
scanf("%d%d%d", &n, &a, &b);
int A[n+1], B;
memset(A ,0, sizeof(A));
int i, site;
for(i=1; i<=a; i++){
scanf("%d", &site);
scanf("%d", &A[site]);
}
long long sum = 0;
for(i=1; i<=b; i++){
scanf("%d%d", &site, &B);
if(B==0) continue;
sum += A[site] * B;
}
printf("%lld", sum);
return 0;
}
100分解法
#include<stdio.h>
int main(){
int n, a, b, i, j, k=0;
scanf("%d%d%d", &n, &a, &b);
int A[a], B[b], Au[a], Bu[b];
for(i=0; i<a; i++) scanf("%d%d", &A[i], &Au[i]);
for(i=0; i<b; i++) scanf("%d%d", &B[i], &Bu[i]);
long long sum = 0;
for(i=0; i<a; i++){
for(j=k; j<b; j++){
if(A[i]==B[j]){
sum += Au[i] * Bu[j];
k = j + 1;//向下一个数推进
break;
}
if(A[i]<B[j]){
k = j;//存储当前数值
break;
}
}
}
printf("%lld", sum);
return 0;
}