➤ Problem Link : 165C. Another Problem on Strings
✅ C++ Solution :
#include<bits/stdc++.h> using namespace std; #define ll long long int int main() { int k; string s; cin>>k; cin>>s; ll cum[s.length()+1]; unordered_map<ll,pair<ll,ll> > mp; for(int i=0;i<s.length();i++) { if(i==0) cum[i]=s[i]-'0'; else cum[i]=s[i]-'0'+cum[i-1]; if(mp.find(cum[i])==mp.end()) mp[cum[i]]=make_pair(i,i); else mp[cum[i]].second=i; } ll prev=0,fin,l,r,ans=0; for(int i=0;i<s.length();i++) { if(i!=0) prev=cum[i-1]; fin = prev + k ; if(mp.find(fin)==mp.end()) continue; l = max(mp[fin].first,(ll)i); r = mp[fin].second; if(l<=r) ans+=r-l+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!!