180E. Cubes - Codeforces Solution C++

  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!!