➤ Problem Link : 1333C. Eugene and an array
✅ C++ Solution :
#include<bits/stdc++.h>
using namespace std;
#define ll long long int
int main()
{
ios_base::sync_with_stdio(false);
cin.tie(NULL);
ll n;
cin>>n;
ll arr[n+1];
for(ll i=1;i<=n;i++)
cin>>arr[i];
ll j=1;
map<ll,ll> mp;
ll curr=0;
ll ans=0;
mp[0]=0;
for(ll i=1;i<=n;i++)
{
curr+=arr[i];
if(arr[i]==0)
j=i+1;
else
{
auto it=mp.find(curr);
if(it!=mp.end())
j=max(j,it->second+2);
ans+=i-j+1;
}
mp[curr]=i;
}
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!!
