传送门
多项式相加如果等于零就抵消不再输出 同时项数减一
set从大到小排序 set<int,greater>se;
#include <iostream>
#include<stdio.h>
#include<set>
using namespace std;
double an[1010];
int main()
{
int n,a;
double b;
set<int,greater<int>>se;
set<int,greater<int>>::iterator it;
scanf("%d",&n);
while(n--){
scanf("%d %lf",&a,&b);
se.insert(a);
an[a]+=b;
//printf("%.2f\n",an[a]);
}
scanf("%d",&n);
while(n--){
scanf("%d %lf",&a,&b);
se.insert(a);
an[a]+=b;
//printf("%.2f\n",an[a]);
}
int h=0;
for(it=se.begin();it!=se.end();it++){
if(an[*it]==0){
//printf(" %d %.1f",*it,an[*it]);
h++;
}
}
cout<<se.size()-h;
for(it=se.begin();it!=se.end();it++){
if(an[*it]!=0){
printf(" %d %.1f",*it,an[*it]);
}
}
se.clear();
return 0;
}