要记得把数组开到最大。1005,2005.
#include<iostream>
#include <stdlib.h>
using namespace std;
int main() {
int k, n;
double aN, ans[2005] = { 0.0 }, arr[1005] = {0.0};
cin >> k;
for (int i = 0; i < k; i++) {
cin >> n >> aN;
arr[n] += aN;
}
cin >> k;
for (int i = 0; i < k; i++) {
cin >> n >> aN;
for (int j = 0; j < 1005; j++) {
if (arr[j] != 0) ans[j + n] += arr[j] * aN;
}
}
int cnt = 0;
for (int i = 0; i < 2005; i++) {
if (ans[i] != 0.0) cnt++;
}
cout << cnt;
for (int i = 2000; i >= 0; i--)
if (ans[i] != 0.0)
printf(" %d %.1f", i, ans[i]);
cout << endl;
return 0;
system("pause");
}