Language: C++

#include<iostream>
using namespace std;

#include <bits/stdc++.h> 
using namespace std; 
  
// Function to return the maximized gcd 
// after removing a single element 
// from the given array 
long long MaxGCD(long long a[], long long n) 
{ 
  
    // Prefix and Suffix arrays 
    int Prefix[n + 2]; 
    int Suffix[n + 2]; 
  
    // Single state dynamic programming relation 
    // for storing gcd of first i elements 
    // from the left in Prefix[i] 
    Prefix[1] = a[0]; 
    for (int i = 2; i <= n; i += 1) { 
        Prefix[i] = __gcd(Prefix[i - 1], a[i - 1]); 
    } 
  
    // Initializing Suffix array 
    Suffix[n] = a[n - 1]; 
  
    // Single state dynamic programming relation 
    // for storing gcd of all the elements having 
    // greater than or equal to i in Suffix[i] 
    for (int i = n - 1; i >= 1; i -= 1) { 
        Suffix[i] = __gcd(Suffix[i + 1], a[i - 1]); 
    } 
  
    // If first or last element of 
    // the array has to be removed 
    int ans = max(Suffix[2], Prefix[n - 1]); 
  
    // If any other element is replaced 
    for (int i = 2; i < n; i += 1) { 
        ans = max(ans, __gcd(Prefix[i - 1], Suffix[i + 1])); 
    } 
  
    // Return the maximized gcd 
    return ans; 
} 

int main()
{
long long n;
long long a[n];
for(int i=0;i<n;i++)
cin>>a[i];
cout<<MaxGCD(a,n);
return 0;
}


Compiler output:
a.cc: In function 'long long int MaxGCD(long long int*, long long int)':
a.cc:22:26: error: no matching function for call to '__gcd(int&, long long int&)'
   22 |         Prefix[i] = __gcd(Prefix[i - 1], a[i - 1]);
      |                     ~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~
In file included from /usr/include/c++/14/algorithm:61,
                 from /usr/include/x86_64-linux-gnu/c++/14/bits/stdc++.h:51,
                 from a.cc:4:
/usr/include/c++/14/bits/stl_algo.h:1137:5: note: candidate: 'template<class _EuclideanRingElement> _EuclideanRingElement std::__gcd(_EuclideanRingElement, _EuclideanRingElement)'
 1137 |     __gcd(_EuclideanRingElement __m, _EuclideanRingElement __n)
      |     ^~~~~
/usr/include/c++/14/bits/stl_algo.h:1137:5: note:   template argument deduction/substitution failed:
a.cc:22:26: note:   deduced conflicting types for parameter '_EuclideanRingElement' ('int' and 'long long int')
   22 |         Prefix[i] = __gcd(Prefix[i - 1], a[i - 1]);
      |                     ~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~
a.cc:32:26: error: no matching function for call to '__gcd(int&, long long int&)'
   32 |         Suffix[i] = __gcd(Suffix[i + 1], a[i - 1]);
      |                     ~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~
/usr/include/c++/14/bits/stl_algo.h:1137:5: note: candidate: 'template<class _EuclideanRingElement> _EuclideanRingElement std::__gcd(_EuclideanRingElement, _EuclideanRingElement)'
 1137 |     __gcd(_EuclideanRingElement __m, _EuclideanRingElement __n)
      |     ^~~~~
/usr/include/c++/14/bits/stl_algo.h:1137:5: note:   template argument deduction/substitution failed:
a.cc:32:26: note:   deduced conflicting types for parameter '_EuclideanRingElement' ('int' and 'long long int')
   32 |         Suffix[i] = __gcd(Suffix[i + 1], a[i - 1]);
      |                     ~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~