HackerRank - 最大の矩形

ポータル

問題の意味

各建物は1であり、幅一定の高さ、最大の矩形領域の算出が存在であり、nは隣接する建物を与えます。

 

思考

各矩形の高さは、左端の構築のi番目のレコードに[i]はL [i]とR&LTで、高い建築物として使用され、右端の高いにも拡張することができる長方形の範囲の範囲にすることができます。

 

コード

1の#include <iostreamの>
 2の#include <cstdioを>
 3の#include <キュー>
 4  使用して 名前空間をSTD。
5  CONST  INT MAXN = 100000 + 5 6  
7  INT [MAXN]、L [MAXN]、R [MAXN]。
8  
9  構造体ノード{
 10      のint 値、POS。
11      ブール 演算子 <(constのノード&RHS)のconst {
 12          戻り値< rhs.value。
13      }
 14  }。
15  
16  INT メイン(){
 17      // freopenは( "in.txt"、 "R"、STDIN)。
18      INT N。
19      ながら(〜のscanf(" %d個"、&N)){
 20          のためにINT iは= 0、I <N; I ++)のscanf(" %dの"、および[I])。
21  
22          PRIORITY_QUEUE <ノード> Q。
23          のためにINT iは= 0、I <N; I ++ ){
 24              ながら(!q.empty()){
 25                 ノードs = q.top()。
26                  であれば(s.value> [I]){
 27                      R [s.pos] = I- 1 28                      q.pop()。
29                  }
 30                  そう であれば(s.value <= [I]){
 31                      ブレーク32                  }
 33              }
 34              ノードs。
35              s.value = A [i]は、
36              s.pos = I。
37              q.push(S);
38          }
 39         一方、(!q.empty()){
 40              ノードs = q.top()。
41              q.pop()。
42              R [s.pos] = N- 1 ;
43          }
 44  
45          のためにINT I = N- 1、I> = 0 ; i-- ){
 46              ながら(!{q.empty())
 47                  ノードs = q.top()。
48                  であれば(s.value> [I]){
 49                      L [s.pos] = I + 1 50                      q.pop()。
51                 }
 52                  そう であれば(s.value <= [I]){
 53                      ブレーク54                  }
 55              }
 56              ノードs。
57              s.value = A [i]は、
58              s.pos = I;
59              q.push(S);
60          }
 61          ながら(!q.empty()){
 62              ノードs = q.top()。
63              q.pop();
64              [s.pos] = L 0 65          }
 66 
67の         int型の RES = - 1 ;
68          のためにINT iが= 0 ; iが<N; I ++ ){
 69の              RES = MAX(RES、[I] *(R [i]は-l [I] + 1 ))。
70          }
 71          のprintf(" %dの\ n " 、RES)。
72      }
 73      リターン 0 74 }

 

おすすめ

転載: www.cnblogs.com/zyb993963526/p/12654296.html