# HackerEarth Number of arrays problem solution

In this HackerEarth Number of arrays problem solution, You are given an array A. You need to divide this array into exactly K non-empty segments and check whether the minimum element S amongst the maximum elements amongst all segments is less than Q or not.
In other words, if we store the maximum element of each of the segments in an array P, then you have to check if a minimum element in P is less than Q or not.

## HackerEarth Number of arrays problem solution.

`import java.io.OutputStream;import java.io.IOException;import java.io.InputStream;import java.io.PrintWriter;import java.io.FilterInputStream;import java.io.BufferedInputStream;import java.io.InputStream;class Main {    public static void main(String[] args) {        InputStream inputStream = System.in;        OutputStream outputStream = System.out;        ScanReader in = new ScanReader(inputStream);        PrintWriter out = new PrintWriter(outputStream);        Minimum_Number solver = new Minimum_Number();        solver.solve(1, in, out);        out.close();    }    static class Minimum_Number {        public void solve(int testNumber, ScanReader in, PrintWriter out) {            int testcases = in.scanInt();            int N, K, Q;            int checker, temp;            while (testcases-- > 0) {                N = in.scanInt();                K = in.scanInt();                Q = in.scanInt();                if (K != 1) checker = Integer.MAX_VALUE;                else checker = Integer.MIN_VALUE;                for (int i = 0; i < N; i++) {                    temp = in.scanInt();                    if (K != 1) {                        if (temp < checker) checker = temp;                    } else if (temp > checker) checker = temp;                }                if (checker < Q) out.println(checker);                else out.println("NO");            }        }    }    static class ScanReader {        private byte[] buf = new byte[4 * 1024];        private int index;        private BufferedInputStream in;        private int total;        public ScanReader(InputStream inputStream) {            in = new BufferedInputStream(inputStream);        }        private int scan() {            if (index >= total) {                index = 0;                try {                    total = in.read(buf);                } catch (Exception e) {                    e.printStackTrace();                }                if (total <= 0) return -1;            }            return buf[index++];        }        public int scanInt() {            int integer = 0;            int n = scan();            while (isWhiteSpace(n)) n = scan();            int neg = 1;            if (n == '-') {                neg = -1;                n = scan();            }            while (!isWhiteSpace(n)) {                if (n >= '0' && n <= '9') {                    integer *= 10;                    integer += n - '0';                    n = scan();                }            }            return neg * integer;        }        private boolean isWhiteSpace(int n) {            if (n == ' ' || n == '\n' || n == '\r' || n == '\t' || n == -1) return true;            else return false;        }    }}`

### Second solution

`#include<bits/stdc++.h>using namespace std;int Check (int Q, int K, vector<int> arr) {   // write your code here}int main() {    ios::sync_with_stdio(0);    cin.tie(0);    int T;    cin >> T;    for(int t_i=0; t_i<T; t_i++)    {        int N;        cin >> N;        int K;        cin >> K;        int Q;        cin >> Q;        vector<int> arr(N);        for(int i_arr=0; i_arr<N; i_arr++)        {          cin >> arr[i_arr];          assert(arr[i_arr]<=1e9);        }        sort(arr.begin(),arr.end());        if(K==1)        {            if(arr[N-1]<Q)cout<<arr[N-1]<<"\n";            else cout<<"NO\n";continue;        }        if(arr[0]<Q)cout<<arr[0]<<"\n";        else cout<<"NO\n";    }}`