#include <cstdio>
#include <cstdlib>
#include <algorithm>
#include <queue>
int main(){
int k;
long long int n;
scanf("%d %lld",&k,&n);
int p[k];
for(int i=0;i<k;i++) scanf("%d",&p[i]);
std::priority_queue<long long int> Q;
Q.push(1);
long long int best = 1;
bool isEqual = false;
while(!Q.empty()){
long long int el = Q.top();
Q.pop();
for(int i=0;i<k;i++){
long long int tmp = el*p[i];
if(tmp<n){
Q.push(tmp);
best = std::max(best,tmp);
}
if(tmp==n){
isEqual=true;
best = n;
break;
}
}
if(isEqual){
break;
}
}
printf("%lld\n",best);
}
//Author: Helena Borak
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 | #include <cstdio> #include <cstdlib> #include <algorithm> #include <queue> int main(){ int k; long long int n; scanf("%d %lld",&k,&n); int p[k]; for(int i=0;i<k;i++) scanf("%d",&p[i]); std::priority_queue<long long int> Q; Q.push(1); long long int best = 1; bool isEqual = false; while(!Q.empty()){ long long int el = Q.top(); Q.pop(); for(int i=0;i<k;i++){ long long int tmp = el*p[i]; if(tmp<n){ Q.push(tmp); best = std::max(best,tmp); } if(tmp==n){ isEqual=true; best = n; break; } } if(isEqual){ break; } } printf("%lld\n",best); } //Author: Helena Borak |
English