WA。
#include<stdio.h>
#include<iostream>
#include<algorithm>
using namespace std;
long long n,T,sum,m;
struct as
{
long long a,b,c;
}x[51000];
bool a[200000];
struct tree
{
long long l,r,sum;
}t[200000];
void p_u_(long long u)
{
t[u].sum=t[u<<1].sum+t[u<<1|1].sum;
}
void b_(long long u,long long l,long long r)
{
t[u].l=l,t[u].r=r;
if(l==r)
{
t[u].sum=1;
return;
}
long long mid=l+r>>1;
b_(u<<1,l,mid);
b_(u<<1|1,mid+1,r);
p_u_(u);
}
long long q_(long long u,long long l,long long r)
{
if(a[n])return 0;
if(l==t[u].l&&r==t[u].r)return t[u].sum;
long long mid=(t[u].l+t[u].r)>>1;
if(r<=mid)return q_(u<<1,l,r);
else
{
if(l>mid)return q_(u<<1|1,l,r);
else
{
return q_(u<<1,l,mid)+q_(u<<1|1,mid+1,r);
}
}
}
void ud1(long long n,long long be,long long en)
{
if(be==t[n].l&&en==t[n].r)
{
a[n]=1;
t[n].sum=0;
return;
}
long long mid=t[n].l+t[n].r>>1;
if(en<=mid)ud1(n<<1,be,en);
else
{
if(be>mid)ud1(n<<1|1,be,en);
else
{
ud1(n<<1,be,mid);
ud1(n<<1|1,mid+1,en);
}
}
p_u_(n);
}
void u_d_(long long n,long long be,long long en,long long c)
{
if(t[n].l==be&&t[n].r==en&&c==t[n].sum)
{
a[n]=1;
t[n].sum=0;
return;
}
long long mid=(t[n].l+t[n].r)>>1;
if(en<=mid)u_d_(n<<1,be,en,c);
else
{
if(be>mid)u_d_(n<<1|1,be,en,c);
else
{
long long ss=q_(n,mid+1,en);
if(ss>=c)u_d_(n<<1|1,mid+1,en,c);
else ud1(n<<1|1,mid+1,en),u_d_(n<<1,be,mid,c-ss);
}
}
p_u_(n);
}
bool cmp(as x,as y)
{
return x.b<y.b;
}
int main()
{
cin>>n;
b_(1,0,50000);
for(long long i=1;i<=n;i++)cin>>x[i].a>>x[i].b>>x[i].c;
sort(x+1,x+n+1,cmp);
for(long long i=1;i<=n;i++)
{
long long tt=q_(1,x[i].a,x[i].b);
tt=x[i].b-x[i].a+1-tt;
if(tt<x[i].c)
{
u_d_(1,x[i].a,x[i].b,x[i].c-tt);
}
}
cout<<50001-q_(1,0,50000)<<endl;
return 0;
}