This time, you are supposed to find A+B where A and B are two polynomials.

Input

Each input file contains one test case. Each case occupies 2 lines, and each line contains the information of a polynomial: K N1 aN1 N2 aN2 … NK aNK, where K is the number of nonzero terms in the polynomial, Ni and aNi (i=1, 2, …, K) are the exponents and coefficients, respectively. It is given that 1 <= K <= 10,0 <= NK < … < N2 < N1 <=1000.

Output

For each test case you should output the sum of A and B in one line, with the same format as the input. Notice that there must be NO extra space at the end of each line. Please be accurate to 1 decimal place.

Sample Input
2 1 2.4 0 3.2
2 2 1.5 1 0.5

Sample Output
3 2 1.5 1 2.9 0 3.2

翻译:
这一次,你要在两个多项式里计算A和B的值。
输入:
每一个测试用例包括2行,每一行包含一个多项式的信息,K, N1,aN1, N2,aN2, …., NK,aNK,其中,K是非0项的总个数,Ni 和
aNi (i=1, 2, …, K)分别为指数和系数(相当于key和value),给定 1 <= K <= 10,0 <= NK < … < N2 < N1 <=1000.
输出:
对于每一个测试用例你必须在一行里输出它们的和,和输入的格式一样,注意必须在每一行结尾不能有额外的空格,精确到小数点后1位。
思路:
创建一个arr[1000],分别循环读入每个多项式存在缓冲区中的数据,并将数据保存到arr中。求出含值的指数的个数,最后输出。

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h> 
using namespace std;
int main() 
{
	float arr[1001] = { 0 };
	int m, n, t;
	float value;
	int count = 0;
	scanf("%d", &m);
	for (int i = 0; i < m; ++i)
	{
		scanf("%d %f", &t, &value);
		arr[t] += value;
	}
	scanf("%d", &n);
	for (int i = 0; i < n;++i)
	{
		scanf("%d %f", &t, &value);
		arr[t] += value;
	}
	for (int i = 0; i < 1001;++i) 
	{ 
	if (0.0 != arr[i]) count++; 
	} 
	printf("%d", count); 
	for (int i = 1000; i >= 0;--i)
	{
		if (0.0 != arr[i])
			printf(" %d %.1f", i, arr[i]);
	}
	return 0;