PAT 1002

 1 #include <cstdio>
2 #include <iostream>
3 #include <iomanip>
4 #include <vector>
5
6 using namespace std;
7 int main()
8 {
9 int n1;
10 vector<double> num1;
11 vector<int> num1index;
12 int n2;
13 vector<double> num2;
14 vector<int> num2index;
15
16 vector<double> sum;
17 vector<int> sumindex;
18
19 int myindex;
20 double mynum;
21
22 cin>>n1;
23 for(int i=0;i<n1;i++)
24 {
25 cin>>myindex;
26 num1index.push_back(myindex);
27 cin>>mynum;
28 num1.push_back(mynum);
29 }
30
31 cin>>n2;
32 for(int j=0;j<n2;j++)
33 {
34 cin>>myindex;
35 num2index.push_back(myindex);
36 cin>>mynum;
37 num2.push_back(mynum);
38 }
39 int i=0,j=0;
40 for(;i<n1&&j<n2;)
41 {
42 if(num1index.at(i) > num2index.at(j))
43 {
44 sumindex.push_back(num1index.at(i));
45 sum.push_back(num1.at(i));
46 i++;
47 }
48 else if(num1index.at(i) < num2index.at(j))
49 {
50 sumindex.push_back(num2index.at(j));
51 sum.push_back(num2.at(j));
52 j++;
53 }
54 else if(num1index.at(i) == num2index.at(j))
55 {
56 sumindex.push_back(num1index.at(i));
57 sum.push_back(num1.at(i)+num2.at(j));
58 i++;j++;
59 }
60
61 }
62 while(i<n1)
63 {
64 sumindex.push_back(num1index.at(i));
65 sum.push_back(num1.at(i));
66 i++;
67 }
68 while(j<n2)
69 {
70 sumindex.push_back(num2index.at(j));
71 sum.push_back(num2.at(j));
72 j++;
73 }
74 cout<<setiosflags(ios::fixed);
75 cout<<setprecision(1);
76 int size = 0;
77 for(int i = 0;i<sum.size();i++)
78 {
79 if(sum.at(i) != 0.0)
80 size++;
81 }
82 cout<<size;
83 for(int i = 0;i<sum.size();i++)
84 {
85 if(sum.at(i) != 0)
86 cout<<" "<<sumindex.at(i)<<" "<<sum.at(i);
87 }
88 return 0;
89 }

posted on 2012-02-17 23:15  bingwenst  阅读(189)  评论(0)    收藏  举报

导航