Pls help me finding the error in this code
I have taken this link as reference
I am getting correct answer while running it in the terminal while spoj throws me wa
Thank you in advance
#include<bits/stdc++.h>
using namespace std;
#define inf 100005
#define ll long long
ll a[inf],f[inf],st[4*inf];
ll n,q;
void build(ll pos,ll l,ll r)
{
if(l==r)
{
st[pos]=f[l];
return;
}
ll mid=(l+r)>>1;
build(2*pos+1,l,mid);
build(2*pos+2,mid+1,r);
st[pos]=max(st[pos*2+1],st[pos*2+2]);
}
ll RMQ(ll pos,ll l,ll r,ll ql,ll qr)
{
if(ql<=l&&r<=qr) return st[pos];
if(qr<l||ql>r||ql>qr) return 0;
ll mid=(l+r)>>1;
return max(RMQ(2*pos+1,l,mid,ql,qr),RMQ(2*pos+2,mid+1,r,ql,qr));
}
ll maxOcc(ll l,ll r)
{
ll res;
if(a[l]==a[r]) res=r-l+1;
else{
ll left=0,right=0;
while(l>0 && l<=r && f[l]==f[l-1])
{
l++;
left++;
}
while (r<n-1 && l<=r && f[r]==f[r+1])
{
r--;
right++;
}
res=max(max(left,right),RMQ(0,0,n-1,l,r));
}
return res;
}
int main()
{
int eof;
cin>>n>>q;
unordered_map<ll,ll>map;
for(ll i=0;i<n;i++) cin>>a[i],map[a[i]]++;
for(ll i=0;i<n;i++) f[i]=map[a[i]];
build(0,0,n-1);
for(int i=0;i<q;i++)
{
ll x,y;
cin>>x>>y;
x--,y--;
cout<<maxOcc(x,y)<<endl;
}
cin>>eof;
if(eof==0) return 0;
}