fork download
  1. #include <bits/stdc++.h>
  2. #include <ext/pb_ds/assoc_container.hpp>
  3. #include <ext/pb_ds/tree_policy.hpp>
  4. using namespace std;
  5. using namespace __gnu_pbds;
  6. typedef tree<int, null_type, less<int>, rb_tree_tag, tree_order_statistics_node_update> orderedset;
  7. #define MO2 ios_base::sync_with_stdio(false);cin.tie(NULL);
  8. #define endl '\n'
  9. #define int long long
  10. #define elif else if
  11. #define sz(x) long(x.size())
  12. #define all(vec) vec.begin(), vec.end()
  13. const int mod = 1e9 + 7;
  14. const int dx[] = {0, -1, 0, 1, 1, -1, 1, -1};
  15. const int dy[] = {-1, 0, 1, 0, 1, 1, -1, -1};
  16.  
  17. int n, m, k;
  18. string s, z;
  19. vector<int> vec;
  20. void dope() {}
  21.  
  22. void solve() {
  23. cin >> n >> m;
  24. vec.resize(n);
  25. map<int, int> mp;
  26. for (auto&it:vec) {
  27. cin >> it;
  28. mp[it]++;
  29. }
  30. vec.clear();
  31. for (auto &it:mp)
  32. if (mp[it.first]>=m)
  33. vec.push_back(it.first);
  34. if (vec.empty())
  35. return void(cout << -1);
  36. elif (sz(vec) == 1)
  37. return void(cout << vec.front() << ' ' << vec.front());
  38. int bg = vec[0], ed = vec[0], ansbg = -1, ansed = -1;
  39. for (int i = 1; i < n; i++) {
  40. if (vec[i] == ed + 1)
  41. ed++;
  42. else {
  43. if (ansed - ansbg <= ed - bg)
  44. ansbg = bg, ansed = ed;
  45. bg = ed = vec[i];
  46. }
  47. }
  48. if (ansed - ansbg <= ed - bg)
  49. ansbg = bg, ansed = ed;
  50.  
  51. cout << ansbg << ' ' << ansed;
  52. }
  53. signed main() {
  54. MO2
  55. #if ONLINE_JUDGE || CPH
  56. #else
  57. freopen("Input.txt", "r", stdin);
  58. freopen("Output.txt", "w", stdout);
  59. #endif
  60. int nop = 1; cin >> nop;
  61. while (nop--)
  62. {
  63. solve();
  64. if (nop)
  65. cout << endl;
  66. }
  67. return 0;
  68. }
Success #stdin #stdout 0s 5292KB
stdin
Standard input is empty
stdout
-1