#include #define MOD 1000000007LL using namespace std; typedef long long ll; typedef pair P; struct uftree{ int par[200005]; int rank[200005]; int cnt[200005]; uftree(){ } void init(int n){ for(int i=0;ilb){ //printf("%d %d %d\n",i,lb,rb); sum[lb]++; sum[rb-1]--; } lb=lower_bound(x,x+n,x[i]-b)-x; rb=upper_bound(x,x+n,x[i]-a)-x; if(x[i]-x[lb]>=a){ uf.unite(i,lb); } if(rb>lb){ //printf("%d %d %d\n",i,lb,rb); sum[lb]++; sum[rb-1]--; } } for(int i=0;i0){ uf.unite(i,i+1); } } for(int i=0;i