➤ Problem Link : 180E. Cubes
✅ C++ Solution :
#include<bits/stdc++.h>
using namespace std;
#define ll long long int
int main()
{
int n,m,k,val;
cin>>n>>m>>k;
vector<int> arr[m+1];
for(int i=1;i<=n;i++)
{
cin>>val;
arr[val].push_back(i);
}
int ans=1;
vector<int> v;
for(int i=1;i<=m;i++)
{
v=arr[i];
if(v.size()==0 || v.size()==1)
continue;
int cr=0;
int j=0,curr=0;
while(curr+1<v.size() && arr[i][curr+1]-arr[i][curr]-1+cr<=k)
{
cr+=arr[i][curr+1]-arr[i][curr]-1;
curr++;
}
ans=max(ans,curr+1);
while(j<v.size() && curr<v.size())
{
cr-=(arr[i][j+1]-arr[i][j]-1);
j++;
while(curr+1<v.size() && arr[i][curr+1]-arr[i][curr]-1+cr<=k)
{
cr+=arr[i][curr+1]-arr[i][curr]-1;
curr++;
}
ans=max(ans,curr-j+1);
}
}
cout<<ans;
}
Thank you for your patience reading. If you enjoyed this post, I’d be very grateful if you’d help it spread by emailing it to a friend, or sharing it on Whatsapp or Facebook.
😇Happy Learning!!
