title: Count Subarrays Total Distinct Elements Original Array
signature: fun countSubarraysTotalDistinctElementsOriginalArray(arr: ArrayList<Int>, n: Int): Int {
source_py: def count_subarrays_total_distinct_elements_original_array(arr, n):
      vis = dict()
      for i in range(n):
          vis[arr[i]] = 1
      k = len(vis)
      vid = dict()
      ans = 0
      right = 0
      window = 0
      for left in range(n):
          while ((right < n) and (window < k)):
              if (arr[right] in vid.keys()):
                  vid[arr[right]] += 1
              else:
                  vid[arr[right]] = 1
              if (vid[arr[right]] == 1):
                  window += 1
              right += 1
          if (window == k):
              ans += ((n - right) + 1)
          vid[arr[left]] -= 1
          if (vid[arr[left]] == 0):
              window -= 1
      return ans
source_cpp: int count_subarrays_total_distinct_elements_original_array(vector<int> arr, int n) {
    unordered_map < int, int > vis;
    for ( int i = 0;
    i < n;
    ++ i ) vis [ arr [ i ] ] = 1;
    int k = vis . size ( );
    vis . clear ( );
    int ans = 0, right = 0, window = 0;
    for ( int left = 0;
    left < n;
    ++ left ) {
      while ( right < n && window < k ) {
        ++ vis [ arr [ right ] ];
        if ( vis [ arr [ right ] ] == 1 ) ++ window;
        ++ right;
      }
      if ( window == k ) ans += ( n - right + 1 );
      -- vis [ arr [ left ] ];
      if ( vis [ arr [ left ] ] == 0 ) -- window;
    }
    return ans;
  }
question_info.test_list: [{"idx": 0, "outputs": 1, "inputs": {"arr": [13, 39, 49, 52, 53, 69, 72, 79, 83, 96], "n": 5}}, {"idx": 1, "outputs": 4, "inputs": {"arr": [-98, -98, 22, -10, -28, 0, 56, 72, 36, 88, 96, 22, 90, 74, -60, -64, 0, 2, -42, 0, 94, -82, -74], "n": 20}}, {"idx": 2, "outputs": 160, "inputs": {"arr": [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], "n": 26}}, {"idx": 3, "outputs": 1, "inputs": {"arr": [35, 23, 41, 58, 66, 92, 3, 33, 78, 70, 80, 86, 21, 21, 74, 19], "n": 12}}, {"idx": 4, "outputs": 1, "inputs": {"arr": [-98, -80, -52, -10, 4, 76], "n": 3}}, {"idx": 5, "outputs": 609, "inputs": {"arr": [1, 0, 0, 0, 1, 0, 0, 0, 1, 1, 0, 0, 0, 1, 0, 1, 0, 1, 0, 0, 1, 1, 1, 0, 0, 1, 0, 1, 0, 1, 1, 1, 0, 0, 0, 1, 1, 0, 1, 1, 1, 1], "n": 36}}, {"idx": 6, "outputs": 1, "inputs": {"arr": [2, 7, 10, 17, 26, 36, 37, 85, 87, 88], "n": 8}}, {"idx": 7, "outputs": 1, "inputs": {"arr": [64, -2, -94, -84, -48, 86], "n": 5}}, {"idx": 8, "outputs": 91, "inputs": {"arr": [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], "n": 20}}, {"idx": 9, "outputs": 1, "inputs": {"arr": [91, 49, 94, 81, 64, 5, 13, 70, 82, 9, 80, 82], "n": 9}}]
question_info.extension: kts
question_info.test_code: package main
  
  import kotlin.text.*
  import kotlin.math.*
  
  
  // SOLUTION CODE
  // ===================================
  PLACEHOLDER_CODE_BODY
  
  // TESTING CODE
  // ===================================
  fun validateSolution(actual:Int, expected:Int):Boolean{
    return actual.equals(expected)
  }
  fun driver(arr: ArrayList<Int>, n: Int, expected:Int):String {
      try{
        if (validateSolution(PLACEHOLDER_FN_NAME(arr, n), expected)) {
                return "PASSED"
        }
        return "FAILED"
      } catch (e: Exception){
        return e::class.simpleName as String
      }
  
  }
  
  fun main() {
      var result: String = ""
      result = driver(arrayListOf(13, 39, 49, 52, 53, 69, 72, 79, 83, 96), 5, 1)
      println("TEST-0...${result}")
      
      result = driver(arrayListOf(-98, -98, 22, -10, -28, 0, 56, 72, 36, 88, 96, 22, 90, 74, -60, -64, 0, 2, -42, 0, 94, -82, -74), 20, 4)
      println("TEST-1...${result}")
      
      result = driver(arrayListOf(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1), 26, 160)
      println("TEST-2...${result}")
      
      result = driver(arrayListOf(35, 23, 41, 58, 66, 92, 3, 33, 78, 70, 80, 86, 21, 21, 74, 19), 12, 1)
      println("TEST-3...${result}")
      
      result = driver(arrayListOf(-98, -80, -52, -10, 4, 76), 3, 1)
      println("TEST-4...${result}")
      
      result = driver(arrayListOf(1, 0, 0, 0, 1, 0, 0, 0, 1, 1, 0, 0, 0, 1, 0, 1, 0, 1, 0, 0, 1, 1, 1, 0, 0, 1, 0, 1, 0, 1, 1, 1, 0, 0, 0, 1, 1, 0, 1, 1, 1, 1), 36, 609)
      println("TEST-5...${result}")
      
      result = driver(arrayListOf(2, 7, 10, 17, 26, 36, 37, 85, 87, 88), 8, 1)
      println("TEST-6...${result}")
      
      result = driver(arrayListOf(64, -2, -94, -84, -48, 86), 5, 1)
      println("TEST-7...${result}")
      
      result = driver(arrayListOf(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1), 20, 91)
      println("TEST-8...${result}")
      
      result = driver(arrayListOf(91, 49, 94, 81, 64, 5, 13, 70, 82, 9, 80, 82), 9, 1)
      println("TEST-9...${result}")
      
          
  }
  
  main()
question_info.entry_fn_name: countSubarraysTotalDistinctElementsOriginalArray
question_info.entry_cls_name: Solution
question_info.test_case_ids: 0 1 2 3 4 5 6 7 8 9
question_info.commands: kotlinc -script __FILENAME__ -no-reflect -nowarn