CRAN04 - Audition - SPOJ Solution C++

  Problem Link : CRAN04 


👉 Hint : edit please

 


✅ C++ Solution :

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

#define ll long long int

ll cum[1000001];

int main()
{
	int t;
	cin>>t;
	while(t--)
	{
		ll ans=0;
		memset(cum,0,sizeof(cum));
		ll n,k;
		string s;
		cin>>n>>k;
		scanf("\n");
		getline(cin,s);
	
		ll l=s.length();
		if(s[0]=='1')
			cum[0]=1;
		for(ll i=1;i<l;i++)
			cum[i]=cum[i-1]+s[i]-48;
	
		   cum[-1]=0; 
		for(ll i=0;i<l;i++)
		{
			ll left=lower_bound(cum+i,cum+l,cum[i-1]+k)-cum;
			ll right=upper_bound(cum+i,cum+l,cum[i-1]+k)-cum;
			ans+=right-left;
		}
		cout<<ans<<endl;
	}
}

 

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