fork download
  1. #include <bits/stdc++.h>
  2. #define VuDucNam ios_base::sync_with_stdio(false);
  3. #define Lop9a6 cin.tie(NULL);
  4. #define THCSPhamVanDong cout.tie(NULL);
  5. #define ll long long
  6. #define el cout << '\n'
  7. #define sz(a) (ll) a.size()
  8. #define all(a) a.begin(), a.end()
  9. #define fi first
  10. #define se second
  11. #define fill(a, x) memset(a, x, sizeof(a))
  12. #define file(name) \
  13.   if (fopen(name ".inp", "r")) \
  14.   { \
  15.   freopen(name ".inp", "r", stdin); \
  16.   freopen(name ".out", "w", stdout); \
  17.   }
  18. #define TIME (1.0 * clock() / CLOCKS_PER_SEC)
  19. #define RUNTIME cerr << "\nRuntime: " << TIME << "s.\n"
  20.  
  21. using namespace std;
  22.  
  23. const int N5 = 1e5 + 5;
  24. const ll MOD = 1e9 + 7;
  25. const ll inf = LLONG_MAX;
  26.  
  27. vector<bool> prime(10000001,true);
  28. vector<int> nto;
  29. int n,k;
  30. vector<ll> ans;
  31.  
  32. void sang()
  33. {
  34. prime[0]=prime[1]=false;
  35. for(int i=2;i<=sqrt(1e7);++i){
  36. if(prime[i]){
  37. for(int j=i*i;j<=1e7;j+=i)
  38. prime[j]=false;
  39. }
  40. }
  41. for(int i=2;i<=sqrt(1e9);++i){
  42. if(prime[i]) nto.push_back(i);
  43. }
  44. }
  45.  
  46. bool check(ll n)
  47. {
  48. for(int i=0;1LL*nto[i]*nto[i]<=n && i<(int)nto.size();++i){
  49. if(n%nto[i]==0)
  50. return false;
  51. }
  52. return true;
  53. }
  54.  
  55. void solve()
  56. {
  57. sang();
  58. cin >> n >> k;
  59. for(int i=1;i<=n;++i){
  60. ll x;
  61. cin >> x;
  62. if(x<=1e7){
  63. if(prime[x]) ans.push_back(x);
  64. }else{
  65. if(check(x)) ans.push_back(x);
  66. }
  67. }
  68. sort(all(ans));
  69. if((int)ans.size()<k)
  70. cout << -1;
  71. else
  72. cout << ans[k-1];
  73. el;
  74. }
  75.  
  76. int main()
  77. {
  78. VuDucNam Lop9a6 THCSPhamVanDong
  79. // file();
  80. solve();
  81. RUNTIME;
  82. return 0;
  83. }
  84.  
Success #stdin #stdout #stderr 0.06s 5288KB
stdin
10 3
2 8 5 3 7 10 11 4 6 13
stdout
5
stderr
Runtime: 0.056093s.