fork download
  1. #include<bits/stdc++.h>
  2. #define T int t;cin >>t;while(t--)
  3. #define fast ios::sync_with_stdio(false); cin.tie(0); cout.tie(0)
  4. #define ll long long
  5. #define lll unsigned long long
  6. using namespace std;
  7. const int N = 1e6;
  8. int n,c=0;
  9. int arr[N];
  10. bool can(int m){
  11. map<int,int>mm;
  12. int v=0;
  13. for (int i=0;i<m;i++){
  14. if (!mm[arr[i]]) v++,mm[arr[i]]++;
  15. }
  16. if (v==c) return 1;
  17. int l=0;
  18. for (int i=m;i<n;i++){
  19. if (mm[arr[l]]) v--,mm[arr[l]]--;
  20. if (!mm[arr[i]]) v++,mm[arr[i]]++;
  21. l++;
  22. if (v==c) return 1;
  23. }
  24. return 0;
  25. }
  26. void Abady(){
  27. T{
  28. cin >> n;
  29. map<int,int>mp;
  30. for (int i=0;i<n;i++) {
  31. cin >> arr[i];
  32. if (!mp[arr[i]]) c++,mp[arr[i]]++;
  33. }
  34. int l=1,r=n,ans=-1;
  35. while(l<=r){
  36. int mid=(l+r)>>1;
  37. if (can(mid)){
  38. ans=mid;
  39. r=mid-1;
  40. }
  41. else l=mid+1;
  42. }
  43. cout << ans << endl;
  44. c=0;
  45. }
  46. }
  47. int main(){
  48. fast;
  49. Abady();
  50. }
  51.  
Success #stdin #stdout 0.01s 5296KB
stdin
Standard input is empty
stdout
Standard output is empty