pts1,2,5,6该能过的,枚举答案并检查
//
#include <bits/stdc++.h>
typedef long long ll;
using namespace std;
const int N=1e5+10,M=1e6+10;
int a[N],ne[N],sum[N];
int q[N],en;
int n,k,maxn,ans;
bool check(int op)
{
int w=1,dx=0;
while (w)
{
while (a[w]%op!=0&&w)
w=ne[w];
if (!w)
return false;
w++,dx++;
if (dx>=k&&sum[w-1]==a[w-1])
return true;
}
return false;
}
int main ()
{
scanf ("%d %d",&n,&k);
for (int i=1;i<=n;i++)
scanf ("%d",&a[i]),maxn=max(maxn,a[i]);
for (int i=1;i<=n;i++)
{
while (a[q[en]]<a[i]&&en)
ne[q[en]]=i,en--;
q[++en]=i;
}
for (int i=n;i>=1;i--)
sum[i]=max(a[i],sum[i+1]);
if (k==1)
ans=maxn;
else
{
for (int i=maxn;i>=2;i--)
if (check(i))
{
ans=i;
break;
}
if (!ans)
ans=1;
}
printf ("%d",ans);
return 0;
}