676C. Vasya and String - Codeforces Solution C++

  Problem Link : 676C. Vasya and String 


✅ C++ Solution :

 
#include<bits/stdc++.h>
using namespace std;

int main()
{
	int n,k;
	cin>>n>>k;
	string s;
	cin>>s;
	pair<int,int> cum[n+1];
	memset(cum,0,sizeof(cum));
	cum[0]=make_pair(0,0);
	int ac=0,bc=0;
	

	for(int i=1;i<=n;i++)
	{
		if(s[i-1]=='a')
			ac++;
		else
			bc++;
		cum[i]=make_pair(ac,bc);
	}
	int ans=0;
	for(int i=0;i<n;i++)
	{
		int low=i;
		int high=n-1;
		int mid;
		while(low<high)
		{
			mid=low+(high-low+1)/2;
			int val=min(cum[mid+1].first-cum[i].first,cum[mid+1].second-cum[i].second);
			if(val<=k)
				low=mid;
			else
				high=mid-1;
		}
		ans=max(ans,high-i+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!!