map<int, int> mp; // <prefixSum, firstIndex> mp.insert({0, -1}); // 0 is found at first (subarray length: -1)
int sum = 0; int answer = 0; for(int i=0; i<n; ++i){ sum += ans[i]; if(mp.count(sum)) answer = max(answer, i - mp[sum]); // if sum already exists, we check the maximum length that we can go left else mp[sum] = i; } cout << answer;