本地正常,IDE正常,CF runtime error on test 1(第一个样例)
又臭又长的Code
#include<bits/stdc++.h>
using namespace std;
#define ls (x<<1)
#define rs (x<<1|1)
#define R Tree[x].r
#define L Tree[x].l
#define mid ((L+R)>>1)
#define V(x) Tree[x].val
#define T(x) Tree[x].tag
const int N =3e5+20 ;
struct node{
int val,tag,l,r;
}Tree[N*4];
int a[N],m,n,len;
void build(int x,int l,int r)
{
// cout<<x<<"\n";
// V(x)=T(x)=0;
L=l;
R=r;
if(l==r){V(x)=0;return;}
build(ls,l,mid);
build(rs,mid+1,r);
}
void tag_down(int x)
{
V(x)=max(V(x),T(x));
T(ls)=max(T(ls),T(x));
V(ls)=max(V(ls),T(x));
T(rs)=max(T(rs),T(x));
V(rs)=max(V(rs),T(x));
T(x)=0;
}
void update(int x,int l,int r,int c)
{
if(L==R) {V(x)=max(V(x),c);return;}
if(l<=L&&R<=r) {T(x)=c;return ;}
tag_down(x);
if(l<=mid) update(ls,l,r,c);
if(r>mid) update(rs,l,r,c);
}
int query(int x,int p)
{
if(L==R) {return V(x);}
tag_down(x);
if(p<=mid) return query(ls,p);
return query(rs,p);
}
struct hb{
int l,r,hi;
}h[N],nh[N];
vector <int > LS ;
vector <int > cnt;
int final[N];
signed main()
{
/*code by kk19212*/
// Segement_Tree
//2021-11-29
//每个建筑物可以看作放在了一些点 l,……r-1上
//然后将点离散化,
cin>>n;
for(int i=1;i<=n;++i)
cin>>h[i].hi>>h[i].l>>h[i].r ,LS.push_back(h[i].l),LS.push_back(h[i].r);
// LS.push_back(minl-1),LS.push_back(maxr);
sort(LS.begin(),LS.end());
LS.erase(unique(LS.begin(),LS.end()),LS.end());
int zs = LS.size();
zs--;
for(int i=1;i<=n;++i)
{
nh[i].hi=h[i].hi;
nh[i].l=lower_bound(LS.begin(),LS.end(),h[i].l)-LS.begin();
nh[i].r=lower_bound(LS.begin(),LS.end(),h[i].r)-LS.begin()-1;
}
build(1,0,zs);
// for(int i=0;i<=zs;++i)
// cout<<LS[i]<<endl;
// cout<<"---------------\n";
for(int i=1;i<=n;++i)
update(1,nh[i].l,nh[i].r,nh[i].hi);
for(int i=0;i<=zs;++i)
final[i]=query(1,i);
// for(int i=0;i<=zs;++i)
// cout<<LS[i]<<' '<<final[i]<<endl;
int ans = 2;
for(int i = 1;i<=zs;++i)
if(final[i]!=final[i-1]) ans++,ans++;
cout<<ans<<endl;
cout<<LS[0]<<' '<<0<<'\n'<<LS[0]<<' '<<final[0]<<'\n';
for(int i = 1;i<=zs;++i)
if(final[i]!=final[i-1]) cout<<LS[i]<<' '<<final[i-1]<<'\n'<<LS[i]<<' '<<final[i]<<'\n';
return 0;
}