fork download
  1. #include <bits/stdc++.h>
  2. using namespace std;
  3.  
  4. #include <ext/pb_ds/assoc_container.hpp>
  5. #include <ext/pb_ds/tree_policy.hpp>
  6. using namespace __gnu_pbds;
  7.  
  8. #define ll long long
  9. #define all(x) x.begin(), x.end()
  10. #define clr(v, d) memset(v, d, sizeof(v))
  11. #define endl "\n"
  12. #define sz(x) (ll)x.size()
  13. #define vl vector<ll>
  14. #define pb push_back
  15. #define MOD ((ll)1e9 + 7)
  16.  
  17. #define ordered_set tree<ll, null_type, less<ll>, rb_tree_tag, tree_order_statistics_node_update>
  18. #define ordered_set2 tree<ll, null_type, greater<ll>, rb_tree_tag, tree_order_statistics_node_update>
  19.  
  20. void M7MDAN_FARAG() {
  21. ios_base::sync_with_stdio(false), cin.tie(nullptr), cout.tie(nullptr);
  22. #ifndef ONLINE_JUDGE
  23. freopen("input.txt", "r", stdin), freopen("output.txt", "w", stdout);
  24. #endif
  25. }
  26.  
  27. const ll N = 1e12 + 5, M = 1e6 + 2, MAXK = 22, INF = 1e18 + 5;
  28. const ll P = 998244353;
  29.  
  30. // int v[100000005];
  31.  
  32. void solve() {
  33. int n, k;
  34. cin >> n >> k;
  35.  
  36. vector<int> a(n);
  37. for (int i = 0; i < n; i++) {
  38. cin >> a[i];
  39. a[i] %= MOD;
  40. }
  41.  
  42. sort(all(a));
  43. a.erase(unique(all(a)), a.end());
  44.  
  45. // int v_sz = 0;
  46. vector<bool> v(MOD,0);
  47.  
  48. for (int x : a) {
  49. ll curr = x;
  50. for (int j = 1; j <= 100; j++) {
  51. curr += P;
  52. if (curr >= MOD)
  53. curr -= MOD;
  54. v[curr] = 1;
  55. }
  56. }
  57.  
  58. // sort(v, v + v_sz);
  59. // int new_sz = unique(v, v + v_sz) - v;
  60.  
  61. // ll l = 0, r = N;
  62. ll ans = -1;
  63.  
  64. // while (l <= r) {
  65. // ll mid = l + (r - l) / 2;
  66.  
  67. // ll cnt = upper_bound(v, v + new_sz, mid) - v;
  68.  
  69. // ll rem = (mid + 1) - cnt;
  70.  
  71. // if (rem >= k) {
  72. // ans = mid;
  73. // r = mid - 1;
  74. // } else {
  75. // l = mid + 1;
  76. // }
  77. // }
  78.  
  79. for(ll i = 0; i < MOD; i++){
  80. if(!v[i]){
  81. k--;
  82. if(!k){
  83. ans = i;
  84. break;
  85. }
  86. }
  87. }
  88.  
  89. if(k > 0){
  90. ans = MOD - 1 + k;
  91. }
  92.  
  93. cout << ans << endl;
  94. }
  95.  
  96. signed main() {
  97. M7MDAN_FARAG();
  98. ll t = 1;
  99. // cin >> t;
  100. while (t--) {
  101. solve();
  102. }
  103. }
Success #stdin #stdout 1.57s 125228KB
stdin
Standard input is empty
stdout
-1