# Count subarrays with all elements greater than K

Given an array of N integers and a number K, the task is to find the number of subarrays such that all elements are greater than K in it.

**Examples:**

Input: a[] = {3, 4, 5, 6, 7, 2, 10, 11}, K = 5Output: 6

The possible subarrays are {6}, {7}, {6, 7}, {10}, {11} and {10, 11}.

Input: a[] = {8, 25, 10, 19, 19, 18, 20, 11, 18}, K = 13Output: 12

**Approach:** The idea is to start traversing the array using a counter. If the current element is greater than the given value X, increment the counter otherwise add counter*(counter+1)/2 to the number of subarrays and reinitialize counter to 0.

Below is the implementation of the above approach:

## C++

`// C++ program to print the number of subarrays such` `// that all elements are greater than K` `#include <bits/stdc++.h>` `using` `namespace` `std;` `// Function to count number of subarrays` `int` `countSubarrays(` `int` `a[], ` `int` `n, ` `int` `x)` `{` ` ` `int` `count = 0;` ` ` `int` `number = 0;` ` ` `// Iterate in the array` ` ` `for` `(` `int` `i = 0; i < n; i++) {` ` ` `// check if array element` ` ` `// greater than X or not` ` ` `if` `(a[i] > x) {` ` ` `count += 1;` ` ` `}` ` ` `else` `{` ` ` `number += (count) * (count + 1) / 2;` ` ` `count = 0;` ` ` `}` ` ` `}` ` ` `// After iteration complete` ` ` `// check for the last set of subarrays` ` ` `if` `(count)` ` ` `number += (count) * (count + 1) / 2;` ` ` `return` `number;` `}` `// Driver Code` `int` `main()` `{` ` ` `int` `a[] = { 3, 4, 5, 6, 7, 2, 10, 11 };` ` ` `int` `n = ` `sizeof` `(a) / ` `sizeof` `(a[0]);` ` ` `int` `k = 5;` ` ` `cout << countSubarrays(a, n, k);` ` ` `return` `0;` `}` |

## Java

`// Java program to print the number of subarrays such` `// that all elements are greater than K` `import` `java.io.*;` `class` `GFG {` ` ` `// Function to count number of subarrays` `static` `int` `countSubarrays(` `int` `a[], ` `int` `n, ` `int` `x)` `{` ` ` `int` `count = ` `0` `;` ` ` `int` `number = ` `0` `;` ` ` `// Iterate in the array` ` ` `for` `(` `int` `i = ` `0` `; i < n; i++) {` ` ` `// check if array element` ` ` `// greater than X or not` ` ` `if` `(a[i] > x) {` ` ` `count += ` `1` `;` ` ` `}` ` ` `else` `{` ` ` `number += (count) * (count + ` `1` `) / ` `2` `;` ` ` `count = ` `0` `;` ` ` `}` ` ` `}` ` ` `// After iteration complete` ` ` `// check for the last set of subarrays` ` ` `if` `(count!=` `0` `)` ` ` `number += (count) * (count + ` `1` `) / ` `2` `;` ` ` `return` `number;` `}` `// Driver Code` ` ` `public` `static` `void` `main (String[] args) {` ` ` `int` `a[] = { ` `3` `, ` `4` `, ` `5` `, ` `6` `, ` `7` `, ` `2` `, ` `10` `, ` `11` `};` ` ` `int` `n = a.length;` ` ` `int` `k = ` `5` `;` ` ` `System.out.println (countSubarrays(a, n, k));` ` ` ` ` `}` `}` |

## Python3

`# Python program to print the number of` `# subarrays such that all elements are` `# greater than K` `# Function to count number of subarrays` `def` `countSubarrays(a, n, x):` ` ` `count ` `=` `0` ` ` `number ` `=` `0` ` ` ` ` `# Iterate in the array` ` ` `for` `i ` `in` `range` `(n):` ` ` ` ` `# check if array element greater` ` ` `# then X or not` ` ` `if` `(a[i] > x):` ` ` `count ` `+` `=` `1` ` ` `else` `:` ` ` `number ` `+` `=` `(count) ` `*` `(count ` `+` `1` `) ` `/` `2` ` ` `count ` `=` `0` ` ` ` ` `# After iteration complete check for` ` ` `# the last set of subarrays` ` ` `if` `(count):` ` ` `number ` `+` `=` `(count) ` `*` `(count ` `+` `1` `) ` `/` `2` ` ` `return` `int` `(number)` `# Driver Code` `if` `__name__ ` `=` `=` `'__main__'` `:` ` ` `a ` `=` `[` `3` `, ` `4` `, ` `5` `, ` `6` `, ` `7` `, ` `2` `, ` `10` `, ` `11` `]` ` ` `n ` `=` `len` `(a)` ` ` `k ` `=` `5` ` ` `print` `(countSubarrays(a, n, k))` `# This code is contributed by 29AjayKumar` |

## C#

`// C# program to print the number of subarrays such` `// that all elements are greater than K` `using` `System;` `class` `GFG {` ` ` `// Function to count number of subarrays` `static` `int` `countSubarrays(` `int` `[]a, ` `int` `n, ` `int` `x)` `{` ` ` `int` `count = 0;` ` ` `int` `number = 0;` ` ` `// Iterate in the array` ` ` `for` `(` `int` `i = 0; i < n; i++) {` ` ` `// check if array element` ` ` `// greater than X or not` ` ` `if` `(a[i] > x) {` ` ` `count += 1;` ` ` `}` ` ` `else` `{` ` ` `number += (count) * (count + 1) / 2;` ` ` `count = 0;` ` ` `}` ` ` `}` ` ` `// After iteration complete` ` ` `// check for the last set of subarrays` ` ` `if` `(count!=0)` ` ` `number += (count) * (count + 1) / 2;` ` ` `return` `number;` `}` `// Driver Code` ` ` `public` `static` `void` `Main () {` ` ` `int` `[]a = { 3, 4, 5, 6, 7, 2, 10, 11 };` ` ` `int` `n = a.Length;` ` ` `int` `k = 5;` ` ` `Console.WriteLine(countSubarrays(a, n, k));` ` ` ` ` `}` `}` `// This code is contributed by anuj_67..` |

## PHP

`<?php` `// PHP program to print the number` `// of subarrays such that all` `// elements are greater than K` `// Function to count number` `// of subarrays` `function` `countSubarrays(` `$a` `, ` `$n` `, ` `$x` `)` `{` ` ` `$count` `= 0; ` `$number` `= 0;` ` ` `// Iterate in the array` ` ` `for` `(` `$i` `= 0; ` `$i` `< ` `$n` `; ` `$i` `++)` ` ` `{` ` ` `// check if array element` ` ` `// greater than X or not` ` ` `if` `(` `$a` `[` `$i` `] > ` `$x` `)` ` ` `{` ` ` `$count` `+= 1;` ` ` `}` ` ` `else` ` ` `{` ` ` `$number` `+= (` `$count` `) *` ` ` `(` `$count` `+ 1) / 2;` ` ` `$count` `= 0;` ` ` `}` ` ` `}` ` ` `// After iteration complete` ` ` `// check for the last set` ` ` `// of subarrays` ` ` `if` `(` `$count` `)` ` ` `$number` `+= (` `$count` `) *` ` ` `(` `$count` `+ 1) / 2;` ` ` `return` `$number` `;` `}` `// Driver Code` `$a` `= ` `array` `(3, 4, 5, 6, 7, 2, 10, 11);` `$n` `= ` `count` `(` `$a` `);` `$k` `= 5;` `echo` `countSubarrays(` `$a` `, ` `$n` `, ` `$k` `);` `// This code is contributed by anuj_67` `?>` |

## Javascript

`<script>` `// javascript program to print the number of subarrays such` `// that all elements are greater than K ` `// Function to count number of subarrays` ` ` `function` `countSubarrays(a , n , x) {` ` ` `var` `count = 0;` ` ` `var` `number = 0;` ` ` `// Iterate in the array` ` ` `for` `(i = 0; i < n; i++) {` ` ` `// check if array element` ` ` `// greater than X or not` ` ` `if` `(a[i] > x) {` ` ` `count += 1;` ` ` `} ` `else` `{` ` ` `number += (count) * (count + 1) / 2;` ` ` `count = 0;` ` ` `}` ` ` `}` ` ` `// After iteration complete` ` ` `// check for the last set of subarrays` ` ` `if` `(count != 0)` ` ` `number += (count) * (count + 1) / 2;` ` ` `return` `number;` ` ` `}` ` ` `// Driver Code` ` ` ` ` `var` `a = [ 3, 4, 5, 6, 7, 2, 10, 11 ];` ` ` `var` `n = a.length;` ` ` `var` `k = 5;` ` ` `document.write(countSubarrays(a, n, k));` `// This code is contributed by todaysgaurav` `</script>` |

**Output**

6

**Complexity Analysis:**

**Time Complexity: O(N)****Auxiliary Space: O(1)**

Related Topic: Subarrays, Subsequences, and Subsets in Array