CANDY - Candy I - SPOJ Solution C++

  Problem Link : CANDY 


👉 Hint : Use sorting

 


✅ C++ Solution :

 
#include<bits/stdc++.h>
using namespace std;
int main()
{
	while(1)
	{
		int n;
		cin>>n;
		if(n==-1)
			break;
		int arr[n],i,j;
		int ans=0;
		for(i=0;i<n;i++)
		{
			cin>>arr[i];
			ans+=arr[i];
		}
		int x=ans%n;
		ans=ans/n;
		int cnt=0;
		if(x!=0)
		{
			cnt=-1;
		}
		else
		{
		sort(arr,arr+n);
		for(i=0,j=n-1;i<n,j>=0,j!=i;)
		{
			if(arr[j]>ans)
			{
			while(arr[i]<ans)
			{
				arr[i]+=1;
				arr[j]-=1;
				cnt+=1;
				if(arr[j]==ans)
					break;
				
			}
			if(arr[j]==ans)
				j--;
			else if(arr[i]==ans)
				++i;
			}
			else
				j--;
		}
		}
		cout<<cnt<<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!!