用
set
和map
都试过了,结果一个 TLE 一个 MLE 。set
版, TLE92 分:
#include<bits/stdc++.h>
#define int long long
using namespace std;
priority_queue<int,vector<int>,greater<int> >q;
set<int>s;
int a[100005],n,k,m;
signed main(){
cin>>n>>k;
for(int i=1;i<=n;i++) cin>>a[i];
s.insert(1),q.push(1);
for(int i=1;i<=k;i++,q.pop())
for(int j=1;j<=n;j++)
if(!s.count(q.top()*a[j]))
s.insert(q.top()*a[j]),q.push(q.top()*a[j]);
cout<<q.top();
return 0;
}
map
版, MLE92 分:
#include<bits/stdc++.h>
#define int long long
using namespace std;
priority_queue<int,vector<int>,greater<int> >q;
unordered_map<int,bool>s;
int a[100005],n,k,m;
signed main(){
cin>>n>>k;
for(int i=1;i<=n;i++) cin>>a[i];
s[1]=1,q.push(1);
for(int i=1;i<=k;i++,q.pop())
for(int j=1;j<=n;j++)
if(!s[q.top()*a[j]])
s[(q.top()*a[j])]=1,q.push(q.top()*a[j]);
cout<<q.top();
return 0;
}