题目:
C语言解答:
需要注意的是:如果用数组来解这个题的话,是拿不到满分的,会显示运行超时,经过一番搜查学习,这种用结构体的形式会更好。
#include <stdio.h>
struct m{
int a,b;
}u[500000],v[500000];
int main(){
int n,a,b,i,j,k=0;
long long int s=0;
scanf("%d%d%d",&n,&a,&b);
for(i=1;i<=a;i++){
scanf("%d%d",&u[i].a,&u[i].b);
}
for(i=1;i<=b;i++){
scanf("%d%d",&v[i].a,&v[i].b);
}
for(i=1;i<=a;i++){
for(j=k;j<=b;j++){
if(u[i].a==v[j].a){
s=s+u[i].b*v[j].b;
k=j+1;
break;
}
if(u[i].a<v[j].a){
k=j;
break;
}
}
}
printf("%lld",s);
return 0;
}