fork download
  1. #include<bits/stdc++.h>
  2. using namespace std;
  3. #define endl '\n'
  4. #define int long long
  5. const int MOD = pow(10,9)+7;
  6. const int MOD2 = 998244353;
  7. const int INF = LLONG_MAX/2;
  8.  
  9. int primes[1000000];
  10.  
  11. void seive(){
  12. fill(primes, primes + 1000000, 1);
  13. primes[0] = primes[1] = 0;
  14. for(int i = 2 ; i*i < 1000000 ; i++){
  15. if(primes[i]){
  16. for(int j = i*i ; j < 1000000 ; j += i){
  17. primes[j] = 0;
  18. }
  19. }
  20. }
  21. for(int i = 1 ; i < 1000000 ; i++){
  22. primes[i] += primes[i-1];
  23. }
  24. }
  25. int factorial(int n){
  26. if(n==0){
  27. return 1;
  28. }
  29. return (n*(factorial(n-1)))%MOD;
  30. }
  31. bool isPrime(int n){
  32. if(n <= 1) return false;
  33. for(int i = 2 ; i*i <= n ; i++){
  34. if(n % i == 0) return false;
  35. }
  36. return true;
  37. }
  38.  
  39. int power(int a, int b){
  40. if(b == 0) return 1;
  41. a %= MOD;
  42. int value = power(a, b / 2);
  43. if(b % 2 == 0){
  44. return (value * value) % MOD;
  45. } else {
  46. return ((value * value) % MOD * (a % MOD)) % MOD;
  47. }
  48. }
  49.  
  50. int gcd(int a, int b){
  51. if(a == 0) return b;
  52. return gcd(b % a, a);
  53. }
  54. void solve() {
  55. int n;
  56. cin>>n;
  57. int nums[n];
  58. for(int i = 0 ; i<n ; i++){
  59. cin>>nums[i];
  60. }
  61. if(n==1){
  62. cout<<nums[0]<<endl;
  63. }
  64. else{
  65. bool flag = false;
  66. int l = 0 , r = n-1;
  67. while(l<=r){
  68. int mid = l+((r-l))/2;
  69. if(mid==0){
  70. if(nums[mid]==nums[mid+1]){
  71. l = mid+1;
  72. }
  73. else{
  74. flag = true;
  75. cout<<nums[mid]<<endl;
  76. break;
  77. }
  78. }
  79. if(mid<n-1 && mid>0){
  80. if(nums[mid]==nums[mid+1]){
  81. if(mid%2==0){
  82. l = mid+1;
  83. }
  84. else{
  85. r = mid-1;
  86. }
  87. }
  88. else if(nums[mid]==nums[mid-1]){
  89. if(mid%2==0){
  90. r = mid-1;
  91. }
  92. else{
  93. l = mid+1;
  94. }
  95. }
  96. else{
  97. flag = true;
  98. cout<<nums[mid]<<endl;
  99. break;
  100. }
  101. }
  102. else{
  103. if(nums[mid]==nums[mid-1]){
  104. r = mid-1;
  105. }
  106. else{
  107. flag = true;
  108. cout<<nums[mid]<<endl;
  109. break;
  110. }
  111. }
  112. }
  113. if(!flag){
  114. cout<<-1<<endl;
  115. }
  116. }
  117. }
  118.  
  119. signed main(){
  120. ios::sync_with_stdio(false); cin.tie(NULL);
  121. int t;
  122. cin >> t;
  123. while(t--){
  124. solve();
  125. }
  126. return 0;
  127. }
  128.  
  129.  
Success #stdin #stdout 0.01s 5308KB
stdin
2
9
1 1 2 3 3 4 4 8 8
7
3 3 7 7 10 11 11
stdout
2
10