Skip to main content

Posts

Recent posts

Closest Pair Problem For Beginners

SPOJ: CPP - Closest Pair Problem ( Closest Pair,  Divide and Conquer)

Problem Summary:
According to problem, We will be given n points on the plane, each represented by (x, y) coordinates,  our task is to find a pair of points with the smallest distance between them and print only distance between them.
This is a standard closest pair of points problem or closest pair problem ( Wiki Link ).
So, Closest pair problem is a problem in computational geometry where we will be provided an array of points as an input set and we have to find out two points among them whose distance is minimum and find out distance between these points as an output. Particularly we consider all the points lies in two dimensional space and we euclidean distance as a measure for the distance among points.
Solution Idea:
One obvious brute-force solution could be picking all possible pairs of points and finding out euclidean distance among them and hence selecting a pair with minimum distance among them. The sample …

HackerRank: Find Maximum Index Product ( Stack, DS, Histogram Logic )

HackerRank: Find Maximum Index Product ( Stack, DS )
(Find me on HackerRank @ Handle: BishalG )

Problem Summary:
According to problem, you are given an array A of length n.
For each index - i in the array, calculate IndexProduct(i) which is defined as:
IndexProduct(i) = Left(i) * Right(i). 
Again, Left(i) and Right(i) has following definition:
Left(i) = Index on the left side of the array such that j < i and arr[j] > arr[i]
Right(i) = Index on the right side of the array such that j > i and arr[j] > arr[i]
If such index does not exist then it would be 0 in both cases.
Our task is to find maximum ofIndexProduct(i) among all values of i.

Solution Idea:
I'm explaining here the idea for generating values for Left array. Similar concept can be applied to find the values for Right array. After finding both arrays, we can easily calculate IndexProduct for every i and find the maximum value among them which will be our answer.
Calculating Left array:
If we think about naive approach to gene…

HackerRank: Poisonous Plants ( Stacks, DS )

HackerRank: Poisonous Plants ( Stack, DS )
(Find me on HackerRank @ Handle: BishalG )

Problem Summary:
In this problem, we are given some value , say pesticide levels of each plants. A plant will dies if all plants to its left side have smaller such value than that of its own. We have to calculate the number of days after which no plants will die!!

Solution Idea:
For every position find out: "How many times it will be hitted from right side", say hits(i) maximum among all hits(i) is the desired answer!!
To find this, keep track of values in stack and try to eliminate all values in current stack which are greater than p(i) from each points !!
At certain point, if we find element which is to be counted as kth hit counter but that element itself require more than k hits to be stable then, we count that element as hit source of maximum value. In this way, we will not repetitive actions and one element is added and popped from stack at most one time which leads to the O(n) time complexit…

Problem : Codeforces Round #406 (Div. 1) B [ Legacy ]( Dijakstra, Segment tree)

You are given graphN(10^5) nodes and starting node (S), You have to find min distance
needed to go to all other nodes.
Connections among nodes are a little bit different in the form of range type queries,
which are:

(1) you can open a portal from planet u to planet v with cost z.
(2) you can open a portal from planet u to any planet with index in range [l, r]
with cost z.
(3) you can open a portal from any planet with index in range [l, r] to planet u
with cost z.

Idea:
If we tried to make a adjacency matrix normally by traversing from l to r in (2) and (3)
type of connection queries, it will surely time out.
So, what we have to do is to think little bit about segmenttree representation of array.
This representation allow us to make connection matrix only with LOGN adjacency nodes.
So that we may proceed further.

Lets build two types of segment-tree nodes , say UP segment tree ,
which will be used for (2) type of query and DOWN segmenttree which
will be used for (3) type of query.

In UP s…