This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
#include <bits/stdc++.h>
using namespace std;
const int N=300050;
int bit[N],k,n;
void Set(int i){for(;i<N;i+=i&-i)bit[i]++;}
int Get(int i){int ans=0;for(;i;i-=i&-i)ans+=bit[i];return ans;}
const int M=2*N;
const int inf=1e9+7;
#define pii pair<int,int>
int ls[M],rs[M],tsz,root,lzy[M];
pii mn[M];
void Set(int&c,int ss,int se,int qi,int f){
	if(!c)c=++tsz;
	if(ss==se){mn[c]={f,ss};return;}
	int mid=ss+se>>1;
	if(qi<=mid)Set(ls[c],ss,mid,qi,f);
	else Set(rs[c],mid+1,se,qi,f);
	mn[c]=min(mn[ls[c]],mn[rs[c]]);
	mn[c].first+=lzy[c];
}
void Add(int c,int ss,int se,int qs,int qe,int f){
	if(qs>qe||qs>se||ss>qe)return;
	if(qs<=ss&&qe>=se){lzy[c]+=f;mn[c].first+=f;return;}
	int mid=ss+se>>1;
	Add(ls[c],ss,mid,qs,qe,f);
	Add(rs[c],mid+1,se,qs,qe,f);
	mn[c]=min(mn[ls[c]],mn[rs[c]]);
	mn[c].first+=lzy[c];
}
void inicjuj(int n,int k,int*D){
	::n=n;::k=k;
	for(int i=0;i<n;i++){
		if(D[i]>=k)Set(i+1),Set(root,1,n,i+1,inf);
		else Set(root,1,n,i+1,k-D[i]);
	}
}
void podlej(int a,int b){
	Add(root,1,n,a+1,b+1,-1);
	while(mn[root].first==0){
		Set(mn[root].second);
		Set(root,1,n,mn[root].second,inf);
	}
}
int dojrzale(int a,int b){
	return Get(b+1)-Get(a);
}
Compilation message (stderr)
kon.cpp: In function 'void Set(int&, int, int, int, int)':
kon.cpp:15:12: warning: suggest parentheses around '+' inside '>>' [-Wparentheses]
   15 |  int mid=ss+se>>1;
      |          ~~^~~
kon.cpp: In function 'void Add(int, int, int, int, int, int)':
kon.cpp:24:12: warning: suggest parentheses around '+' inside '>>' [-Wparentheses]
   24 |  int mid=ss+se>>1;
      |          ~~^~~| # | Verdict | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict | Execution time | Memory | Grader output | 
|---|
| Fetching results... |