382C. Arithmetic Progression - Codeforces Solution C++

  Problem Link : 382C. Arithmetic Progression 


✅ C++ Solution :

 
#include<bits/stdc++.h>
using namespace std;

#define ll long long int

int main()
{
	int n;
	cin>>n;
	if(n==1)
	{
		cout<<"-1";
		exit(0);
	}
	ll arr[n];
	bool flag=0;
	for(int i=0;i<n;i++)
	{
		cin>>arr[i];
	    if(i>0 && arr[i]!=arr[i-1])
	        flag=1;
	}	
	
	if(!flag)
	{
	    cout<<"1\n"<<arr[0];
	    exit(0);
	}

	sort(arr,arr+n);

    if(n==2)
    {
        int cnt=2;
        int diff=arr[1]-arr[0];
        if(diff%2==0)
            cnt++;
        cout<<cnt<<endl;
        cout<<arr[0]-diff<<" ";
        if(cnt==3)
            cout<<arr[0]+diff/2<<" ";
            
        cout<<arr[n-1]+diff;    
        exit(0);
            
    }

	map<ll,ll> mp;

	for(int i=0;i<n-1;i++)
		mp[arr[i+1]-arr[i]]++;

	ll diff=-1;
	ll cnt=0;
	vector<ll> vec;
	auto it = mp.begin();
	auto it2=it;
	it2++;
	if(mp.size()==1 )
	{
	    cout<<"2\n";
	    auto it=mp.begin();
	    diff=(*it).first;
	    cout<<arr[0]-diff<<" ";
	    cout<<arr[n-1]+diff;
	    exit(0);
	}
	
	if(mp.size() > 2 || (*it).second != n-2 || (*it2).first != (*it).first * 2 )
	{
		cout<<"0";
	}
	else
	{
	
		diff=(*it).first;
	   // cout<<diff<<endl;
		for(int i=0;i<n-1;i++)
		{
			int d=arr[i+1]-arr[i];
			if(d==diff*2)
			{
				vec.push_back(arr[i]+diff);
				break;
			}
		}

		cout<<vec.size()<<endl;
		for(int i=0;i<vec.size();i++)
			cout<<vec[i]<<" ";

	}


}

 

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