这个可以直接用一个c[10001]的数组存系数,里面的标号是指数,值为系数,分别加上a,b的就可以了。`
#include<iostream>
#include<cstdio>
using namespace std;
struct node{
int exp;
double coef;
}a[10],b[10];
double c[10001]={0.0};
int cnt=0;
int main(){
int N1,N2;
cin>>N1;
for(int i=0;i<N1;i++){
cin>>a[i].exp>>a[i].coef;
c[a[i].exp]+=a[i].coef;
}
cin>>N2;
for(int i=0;i<N2;i++){
cin>>b[i].exp>>b[i].coef;
c[b[i].exp]+=b[i].coef;
}
for(int i=0;i<=1000;i++){
if(c[i]!=0.0){
cnt++;
}
}
cout<<cnt;
for(int i=1000;i>=0;i--){
if(c[i]!=0.0){
printf(" %d %.1f",i,c[i]);
}
}
return 0;
}