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