本来这题的难度没什么好说的,但xlk大神的代码实在是太神
可能blog以后也会继续收藏一些神代码
 1 #include<stdio.h>
 2 #include<iostream>
 3 #include<vector>
 4 #include<map>
 5 #include<set>
 6 #define X first
 7 #define Y second
 8 using namespace std;
 9 map<int,vector<int>>a;
10 map<int,int>c;
11 multiset<int>s;
12 int n,h,x,y,z;
13 int main()
14 {
15     freopen("input.txt","r",stdin);
16     freopen("output.txt","w",stdout);
17     cin>>n;
18     s.insert(0);
19     for(int i=0;i<n;i++)
20     {
21         cin>>h>>x>>y;
22         a[x].push_back(h);
23         a[y].push_back(-h);
24     }
25     for(auto i:a)
26     {
27         for(auto j:i.Y)
28             if(j>0)
29                 s.insert(j);
30             else
31                 s.erase(s.find(-j));
32         c[i.X]=*s.rbegin();
33     }
34     h=0;
35     for(auto i:c)
36         if(h!=i.Y)
37             z+=2,h=i.Y;
38     cout<<z<<endl;
39     for(auto i:c)
40         if(h!=i.Y)
41             printf("%d %d\n%d %d\n",i.X,h,i.X,i.Y),h=i.Y;
42 }