Computer Science, asked by arjun9752, 11 months ago

Bottle Necks
Problem Description
There are N bottles. ith bottle has A[i] radius. Once a bottle is enclosed inside another bottle, it ceases to be visible. Minimize the number of visible bottles.

You can put ith bottle into jth bottle if following condition is fulfilled:

1) ith bottle itself is not enclosed in another bottle.

2) jth bottle does not enclose any other bottle.

3) Radius of bottle i is smaller than bottle j (i.e. A[i] < A[j]).

Constraints
1 <= N <= 100000.

1 <= A[i] <= 10^18.

Input Format
First line contains a single integer N denoting the number of bottles.

Second line contains N space separated integers, ith integer denoting the radius of Ith bottle.

(1 <= i <= N).

Output
Minimum number of visible bottles.

Test Case

Explanation
Example 1

Input

8

1 1 2 3 4 5 5 4

Output

2

Explanation

1st bottle can be kept in 3 rd one 1-->2 , which makes following bottles visible [1,2,3,4,5,5,4]

similarly after following operations, the following will be the corresponding visible bottles

Operation ? Visible Bottles

2 ? 3 [1,3,4,5,5,4]

3 ? 4 [1,4,5,5,4]

4 ? 5 [1,5,5,4]

1 ? 4 [5,5,4]

4 ? 5 [5,5]

finally there are 2 bottles which are visible. Hence, the answer is 2

Answers

Answered by vishald295
0

Answer:

import java.util.*;

class BottleNeck{

public static void main(String args[]){

 Scanner sc = new Scanner(System.in);

 int size = sc.nextInt();

 long num;

 int count = 0;

 List<Long> al = new ArrayList<Long>();

 TreeSet<Long> tr = new TreeSet<Long>();

 for(int i = 0 ; i < size ; i++){

  num = sc.nextLong();

  al.add(num);

  tr.add(num);

 }

 while(al.size() > 0){

  while(tr.size() > 0)

  {

   num = tr.first();

   tr.remove(num);

   al.remove(new Long(num));

  }

  count++;

  for(int i = 0 ; i < al.size() ; i++)

  {

   tr.add(al.get(i));

  }

 }

 System.out.println(count);

}

}

Explanation:

Similar questions