#include
#define ll long long
using namespace std;
void buildTree(ll a,ll beg,ll end,ll tree,ll idx,ll k)
{
if(beg==end)
{
if(a[beg]>=k)
{
tree[idx]=1;
}
else
{
tree[idx]=0;
}
return;
}
ll mid=(beg+end)/2;
buildTree(a,beg,mid,tree,2idx,k);
buildTree(a,mid+1,end,tree,2idx+1,k);
tree[idx]=tree[2*idx]+tree[2*idx+1];
}
ll query(ll tree,ll beg,ll end,ll l,ll r,ll idx)
{
if(r<beg || l>end)
{
return 0;
}
if(l<=beg && r>=end)
{
return tree[idx];
}
ll mid=(beg+end)/2;
ll leftAns=query(tree,beg,mid,l,r,2idx);
ll rightAns=query(tree,mid+1,end,l,r,2*idx+1);
return leftAns+rightAns;
}
int main()
{
ll n;
cin>>n;
ll a[n];
for(int i=0;i<n;i++)
cin>>a[i];
ll t;
cin>>t;
while(t--)
{
ll p,q,k;
cin>>p>>q>>k;
ll tree[4*n+1];
p--;
q--;
buildTree(a,0,n-1,tree,1,k);
cout<<query(tree,0,n-1,p,q,1)<<endl;
}
}
WHY i am getting tle??
how can i optimise this code??