(第一时间的思路,未优化)
原题目:
源代码:
#include<iostream>
#include<vector>
#include<stdio.h>
using namespace std;
struct P{
int n;
double a;
};
int main(){
vector<P> x, y, sum;
int k;
cin >> k;
while(k --){
P p;
cin >> p.n >> p.a;
x.push_back(p);
}
cin >> k;
while(k --){
P p;
cin >> p.n >> p.a;
y.push_back(p);
}
while(!x.empty() && !y.empty()){
P p1, p2;
p1 = x.back();
x.pop_back();
p2 = y.back();
y.pop_back();
if(p1.n > p2.n){
sum.push_back(p2);
x.push_back(p1);
}else if(p1.n < p2.n){
sum.push_back(p1);
y.push_back(p2);
}else{
p1.a += p2.a;
if(p1.a != 0)
sum.push_back(p1);
}
}
while(!x.empty()){
P p;
p = x.back();
x.pop_back();
sum.push_back(p);
}
while(!y.empty()){
P p;
p = y.back();
y.pop_back();
sum.push_back(p);
}
if(sum.size() == 0)
cout<<sum.size();
else
cout<<sum.size()<<" ";
while(!sum.empty()){
P p;
p = sum.back();
sum.pop_back();
cout<<p.n<<" ";
printf("%.1f",p.a);
if(!sum.empty())
cout<<" ";
}
}
已AC
易失分点:
1.最后一位不需要输出空格
2.结果可能为0,为0时只输出K,不要加空格
3.中间结果也有可能为0,为0时不计入