466C. Number of Ways - Codeforces Solution C++

  Problem Link : 466C. Number of Ways 


✅ C++ Solution :

 
#include<bits/stdc++.h>

using namespace std;

#define ll long long int

int main()
{
	int n;
	cin>>n;
	ll arr[n];
	bool cum[n];
	ll value[n];
	ll sum=0;
	memset(cum,0,sizeof(cum));
	ll cnt=0;
	for(int i=0;i<n;i++)
	{
		cin>>arr[i];
		sum+=arr[i];
		
	}
	if(sum%3!=0)
	{
		cout<<"0";
		return 0;
	}
	ll val=0;
	for(int i=n-1;i>=0;i--)
	{
		val+=arr[i];
		if(val==sum/3)
			cum[i]=1;
		else
			cum[i]=0;

		if(i==n-1)
			value[i]=cum[i];
		else
			value[i]=cum[i]+value[i+1];
	}
	val=0;
	for(int i=0;i<n-2;i++)
	{
		val+=arr[i];
		if(val==sum/3)
			cnt+=value[i+2];
	}

	cout<<cnt;


	    	
	
}

 

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