# SKP's Algorithms and Data Structures #9: Java Problem: Monkeys in the Garden

### This Article Series Focuses on Algorithms, Data Structures, or Applying them to Problem Solving. In this Article, We Discuss the Solution to [Monkeys in the Garden] Problem from Techgig.

Join the DZone community and get the full member experience.

Join For Free**[Question/Problem Statement is the Property of Techgig]**

**Monkeys in the Garden [www.techgig.com]**

In a garden, trees are arranged in a circular fashion with an equal distance between two adjacent trees. The height of trees may vary. Two monkeys live in that garden and they were very close to each other. One day they quarreled due to some misunderstanding. None of them were ready to leave the garden. But each one of them wants that if the other wants to meet him, it should take maximum possible time to reach him, given that they both live in the same garden.

The conditions are that a monkey cannot directly jump from one tree to another. There are 30 trees in the garden. If the height of a tree is H, a monkey can live at any height from 0 to H. Let's say he lives at the height of K then it would take him K unit of time to climb down to the ground level. Similarly, if a monkey wants to climb up to K height it would again take K unit of time. The time to travel between two adjacent trees is 1 unit. A monkey can only travel in a circular fashion in the garden because there is a pond at the center of the garden.

So the question is where should two monkeys live such that the traveling time between them is maximum while choosing the shortest path between them in any direction clockwise or anti-clockwise. You have to answer only the maximum traveling time.

__ Input Format__The First Line consists of Total Number of Trees (N). Each of the Following N Lines contains the Height of Trees in a Clockwise Fashion.

**Constraints**

1 <= Total Trees <= 30

1 <= Height Of Trees(H) <= 10000

**Output Format**

You must Print an Integer which will be the Maximum Possible Travel Time.

**[Explanation of the Solution]**

**[Source Code, Sumith Puri (c) 2021 — Free to Use and Distribute]**

`/* `

` * Techgig Core Java Basics Problem - Monkeys in the Garden `

` * Author: Sumith Puri [I Bleed Java!]; GitHub: @sumithpuri`

` */ `

` `

` import java.io.*; `

` import java.util.*; `

` import java.lang.Math; `

` `

` public class CandidateCode { `

` `

` public static void main(String args[] ) throws Exception { `

` `

` Scanner scanner = new Scanner (System.in); `

` `

` int n = scanner.nextInt(); `

` int h[] = new int[n], max=0; `

` int cwLen=0,acLen=0,hiLen=0,toLen=0; `

` `

` for(int i=0;i<n;i++) { `

` h[i] = scanner.nextInt(); `

` } `

` max=h[0]; `

` `

` for(int i=0;i<n;i++) { `

` `

` for(int j=i+1;j<n;j++) { `

` cwLen=Math.abs(((n-j)+i)); // clockwise `

` acLen=Math.abs((j-i)); // anti-clockwise `

` hiLen=(cwLen<=acLen)?(cwLen):(acLen); `

` toLen=hiLen+h[i]+h[j]; // path length `

` if(toLen>max) max=toLen; // maximum path length `

` } `

` } `

` `

` System.out.println (max); `

` } `

` } `

**!**

*Happy Problem Solving using Java*Published at DZone with permission of Sumith Puri, DZone MVB. See the original article here.

Opinions expressed by DZone contributors are their own.

Comments