http://pat.zju.edu.cn/contests/pat-practise/1009
#include <stdio.h>
#include <cmath>
int N;
double Poly[2][1002],sPoly[2002];
int main()
{
for(int i=0;i<2;i++){
scanf("%d",&N);
for(int j=0;j<N;j++){
int a;
double b;
scanf("%d%lf",&a,&b);
Poly[i][a]+=b;
}
}
int i,j;
for(i=1000;i>=0;i--)
for(j=1000;j>=0;j--){
if(fabs(Poly[0][i])>1e-5&&fabs(Poly[1][j])>1e-5)
sPoly[i+j]+=Poly[0][i]*Poly[1][j];
}
int m=0;
for(i=2000;i>=0;i--){
if(fabs(sPoly[i])>1e-5)
m++;
}
printf("%d",m);
for(i=2000;i>=0;i--){
if(fabs(sPoly[i])>1e-5)
printf(" %d %.1lf",i,sPoly[i]);
}
putchar('\n');
}