大巨别看!
#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);
}