思路:普通模拟一下就ok
代码如下:
#include<iostream>
#include<cstdio>
#include<algorithm>
#include<string>
#include<cstring>
#include<queue>
#include<cmath>
#include<set>
#define ll long long
using namespace std;
const int N=1005,mod=1e9+7;
double a1[N],a2[N],ans[N];
int main(){
int k1,k2,n;
double a;
memset(a1,0,sizeof(a1));
memset(a2,0,sizeof(a2));
scanf("%d",&k1);
int max1=0,max2=0;
for(int i=1;i<=k1;i++){
scanf("%d%lf",&n,&a);
max1=max(max1,n);
a1[n]=a;
}
scanf("%d",&k2);
for(int i=1;i<=k2;i++){
scanf("%d%lf",&n,&a);
a2[n]=a;
max2=max(max2,n);
}
int k=max(max1,max2);
int num=0;
for(int i=0;i<=k;i++){
if(a1[i]==0&&a2[i]==0)continue;
ans[i]=a1[i]+a2[i];
if(ans[i])num++;
}
printf("%d",num);
for(int i=k;i>=0;i--){
if(ans[i]){
printf(" %d %.1f",i,ans[i]);
}
}
printf("\n");
}