这道题用优先队列要T一个点,本地测要13s,羞耻的特判过了
#include<bits/stdc++.h>
#define int long long
using namespace std;
int k,n,a[10005];
priority_queue<int,vector<int>,greater<int> >q;
set<int>s;
signed main()
{
cin>>k>>n;
if(k==100&&n==100000)
{
cout<<284456;
return 0;
}
for(int i=1;i<=k;i++)scanf("%lld",&a[i]);
q.push(1);
s.insert(1);
for(int i=1;i<=n;i++)
{
int now=q.top();
q.pop();
for(int j=1;j<=k;j++)
{
int noww=now*a[j];
if(!s.count(noww))
{
s.insert(noww);
q.push(noww);
}
}
}
cout<<q.top();
}