rt。讨论区的hack都过了。
#include<bits/stdc++.h>
using namespace std;
const int maxn=1e5+19;
using Pii=pair<int,int>;
struct E {
int t,p;
bool operator<(const E b) const {
return p<b.p;
}
}events[2*maxn];
set<int,greater<int>> st;
vector<Pii> out;
int main() {
int n;
cin>>n;
for(int i=1;i<=n;i++) {
int h,l,r;
cin>>h>>l>>r;
// if(l==r) continue;
events[2*i-1]=E{h,l};
events[2*i]=E{-h,r};
}
sort(events+1,events+1+2*n);
st.insert(0);
out.push_back({INT_MIN,0});
for(int i=1;i<=2*n;i++) {
int op=events[i].t,p=events[i].p;
if(op>0) st.insert(op);
else st.erase(-op);
if(events[i+1].p==p) continue;
int h=*st.begin();
if((*out.rbegin()).second==h) continue;
out.push_back(Pii{p,h});
}
cout<<2*(out.size()-1)<<endl;
for(int i=1;i<out.size();i++) {
cout<<out[i].first<<' '<<out[i-1].second<<'\n';
cout<<out[i].first<<' '<<out[i].second<<'\n';
}
}