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