题解:
#include <iostream>
using namespace std;
const int N=1010;
int main()
{
double x[N];
double y[N];
double z[N];
int k;
cin>>k;
while(k--)
{
int n;
double v;
cin>>n>>v;
x[n]=v;
}
cin>>k;
while(k--)
{
int n;
double v;
cin>>n>>v;
y[n]=v;
}
//sim
for(int i=0;i<N;i++) {z[i]=x[i]+y[i];}
//count
if(y[0]<0.000001&&y[0]>0)
{
y[0]=0;
}
if(z[0]<0.000001&&z[0]>0)
{
z[0]=0;
}
k=0;
for(int i=0;i<N;i++)
{
if(z[i])
{
k++;
}
}
cout<<k;
for(int i=N-1;i>=0;i--)//N-1要记住
{
if(z[i])
{
printf(" %d %.1lf",i,z[i]);
}
}
}
//是有疑问的!!为何啊!
好的题解:
#include <iostream>
using namespace std;
const int N = 1010;
double n[N];
int main()
{
for (int i = 0; i < 2; i ++)
{
int k;
cin >> k;
for (int j = 0; j < k; j ++)
{
int a;
double b;
cin >> a >> b;
n[a] += b;
}
}
int k = 0;
for (int i = 0; i < N; i ++)
if (n[i] != 0) k ++;
cout << k << " ";
for (int i = N - 1; i >= 0; i --)
if (n[i] != 0) printf("%d %.1lf ", i, n[i]);
}
作者:P云
链接:https://www.acwing.com/solution/content/11082/
来源:AcWing
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。