HIST2 - Histogram

In statistics, a histogram is a graphical display of tabulated frequencies, shown as bars. It shows what proportion of cases fall into each of several categories. It is a polygon composed of a sequence of rectangles aligned at a common base line. In this problem all rectangles have a width of unit length. But their heights are distinct. Some permutation of the heights will give the maximum perimeter. Your task is to find the maximum perimeter of the histogram and the number of permutations that give the maximum perimeter.

In the image Figure (a) shows a histogram with heights {1,2,3,4} (1st sample testcase) and has a perimeter of 16 units. Figure (b) shows one of the permutations {3,1,2,4} having the maximum perimeter of 20 units.


Input consists of multiple test cases. Each test case describes a histogram and starts with an integer N, 2 ≤ N ≤ 15, denoting the number of rectangles it is composed of. Next line consists of N space separated positive integers representing the heights of the rectangles. All heights are distinct and less than or equal to 100. N=0 indicates the end of tests. There are atmost 50 test cases.


For each test case output the maximum possible perimeter of the histogram and the number of permutations that give maximum perimeter in a single line, separated by a single space.


1 2 3 4
2 6 5

20 8
24 2

hide comments
amrit_saini: 2017-09-26 20:42:13

Can be done wthout dp or bitmasking using logic of factorial.

sucide: 2017-06-13 20:35:46

Ac in one go ,,,
Prerequisite = TSP using held karp.

yashrocks22: 2017-03-05 23:27:15

nice problem,just requires simple math dont go for dp+bitmasking, otherwise it would be very complex...

Last edit: 2017-03-05 23:27:57
prasoonbatham: 2017-01-13 12:36:58

Good Problem. Hint: Try to find a pattern in the number of permutations ;)

aspro: 2016-06-06 14:55:36

very nice question ...loved solving this...also solve ASSIGN in spoj

erdenebayr_d: 2016-05-14 10:25:34

@naruto09: number of permutations equal maximum perimeter

naruto09: 2015-12-07 14:33:58

can someone help me understand how 8 came in test case 1..??

xxbloodysantaxx: 2015-07-15 19:04:52


Sudharsansai: 2015-03-24 15:30:37

DP+Bitmasking for beginners..

yaswanth: 2014-08-17 14:49:21

great problem!!

Added by:Swarnaprakash
Time limit:0.366s
Source limit:50000B
Memory limit:1536MB
Cluster: Cube (Intel G860)
Languages:All except: ERL JS-RHINO NODEJS PERL6
Resource:Kurukshetra 09 OPC