一个简单的模拟题,因为一直想得太过复杂,所以这道题白费了一些脑子。看了一下书上的代码,发现并没有特别难。
1000所占的空间并不大,直接开就好。
本题并不需要开两个数组,直接在一个数组上进行累加即可。
注意输出格式,1位小数
#include <cstdio>
using namespace std;
const int MAXSIZE = 1010;
int main()
{
int K,i,index,count;
double value;
double p[MAXSIZE] = {0};
scanf("%d",&K);
for(i = 0 ;i < K;i++)
{
scanf("%d %lf",&index,&value);
p[index] = value;
}
scanf("%d",&K);
for(i = 0 ;i < K;i++)
{
scanf("%d %lf",&index,&value);
p[index] += value;
}
for(i = 0; i < MAXSIZE;i ++){
if(p[i]!=0) count++;
}
printf("%d",count);
for(i = MAXSIZE-1;i >=0 ; i--)
{
if(p[i]!=0) {
printf(" %d %.1f",i,p[i]);
}
}
return 0;
}