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