大巨别看!

#include <bits/stdc++.h>
#define ll long long
using namespace std;
const int maxn = 1e5 + 7;
struct edg{
	ll x1,x2,y,tag;
	bool operator<(const edg e) const{
		return y == e.y?tag>e.tag:y<e.y;
	}
}a[maxn << 1];
ll n,b[maxn << 1],m,cov[maxn << 3],sum[maxn << 3];
ll ans;
int f(ll x)
{
	return lower_bound(b+1,b+m+1,x) - b;
}
void pushup(ll k,ll l,ll r)
{
	if(cov[k] > 0) sum[k] = b[l] - b[r];
	else if(l + 1 == r) sum[k] = 0;
	else sum[k] = sum[k << 1] + sum[k << 1|1];
}
void add(ll k,ll l,ll r,ll x1,ll x2,ll tag)
{
	if(l >= x1 && r <= x2)
	{
		cov[k] += tag;
		pushup(k,l,r);
		return;
	}
	ll mid = (l + r) >> 1;
	if(x1 < mid) add(k<<1,l,mid,x1,x2,tag);
	if(mid < x2) add(k<<1|1,mid,r,x1,x2,tag);
	pushup(k,l,r);
}