Regarding my solution

Here is My Solution for the question below.


But it is wrong.
Can anyone please tell me where is fault in my code.
For which test case it fells.

#include<iostream>
using namespace std;
int main()
{
long long int t; cin>>t;
 while(t--)
  {
   long long int n; cin>>n;
   long long int *a,*b,k,d[2],cd,ans ;
   a=new long long int[n];
   b=new long long int[n-1];
   d[0]=0;  d[1]=0;
   for (int i=0;i<n;i++)
   {cin>>a[i];}
   if (n==2)
   {
       if (a[0]<a[1])
        cout<<a[0]<<endl;
       else
        cout<<a[1]<<endl;
   }
   else if (n==3)
   {
       if (a[0]<a[1])
        ans=a[0] ;
        else
        ans=a[1];
        if (ans<a[2])
            cout<<ans<<endl;
        else
            cout<<a[2]<<endl;
   }
   else {
   b[0]=a[0] ;
   for (int j=1;j<=2;j++)
   {
     for (int i=2;i<n;i++)

     {
       b[i-j]=a[i-j+1];
     }
     for (int k=0;k<n-3;k++)
     {
         if (2*b[k+1]!=b[k]+b[k+2])
         break;
         else if (k==n-4)
         d[j-1]=b[1]-b[0] ;
     }
   }
   if (d[0]==0 && d[1]==0)
   {
       long long int count=0;
       cd=a[1]-a[0];
       if (n==4)
       {
           if (a[1]+cd==a[2])
           {
               cout<<a[3]<<endl;
           }
           else if (a[1]+cd==a[3])
           {
               cout<<a[2]<<endl;
           }
           else
           {
               cout<<-1<<endl;
           }
       }
       else{
       for (int i=2;i<n;i++)
       {
           if (a[i]!=a[i-1]+cd)
            {count++; ans=a[i-1];}
       }
       if (count==2)
        cout<<ans<<endl;
       else
       cout<<-1<<endl;
       }
   }
   else if (d[0]==0 && d[1]!=0)
   {
       if (n==4)
       {
           if(2*a[1]==a[0]+a[3])
           {
                if (a[2]<a[0])
                cout<<a[2]<<endl;
                else
                cout<<a[0]<<endl;
           }
           if (2*a[1]==a[0]+a[2])
           {
               if (a[3]<a[0])
                cout<<a[3]<<endl;
               else
                cout<<a[0]<<endl;
           }
       }
       else
       {
           cout<<a[0]<<endl;
       }
   }
   else if (d[0]!=0 && d[1]==0)
   {

       if (n==4)
       {
           if(2*a[1]==a[0]+a[3])
           {
                if (a[2]<a[0])
                cout<<a[2]<<endl;
                else
                cout<<a[1]<<endl;
           }
           if (2*a[1]==a[0]+a[2])
           {
               if (a[3]<a[1])
                cout<<a[3]<<endl;
               else
                cout<<a[1]<<endl;
           }
       }
       else
       {
           cout<<a[1]<<endl;
       }
   }
   else
   {
       if (d[0]==d[1])
       {
           if (a[0]<a[n-1])
            cout<<a[0]<<endl;
           else
            cout<<a[n-1]<<endl;
       }
       else
       {
           if (a[0]<a[1])
            cout<<a[0]<<endl;
           else
            cout<<a[1]<<endl;
       }
   }

   }
  }
return 0;
}

Creating 3 threads for same question? Dude, thats not good.

1 Like