Advertisement
Guest User

Untitled

a guest
Jan 30th, 2017
83
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
D 1.20 KB | None | 0 0
  1. import std.container;
  2. import std.conv;
  3. import std.stdio;
  4. import std.string;
  5.  
  6. void main()
  7. {
  8.     readln;
  9.  
  10.     auto input = readln.split.to!(int[]);
  11.     auto stack = DList!int();
  12.  
  13.     auto area = 0;
  14.     auto areaMax = 0;
  15.  
  16.     auto i = 0;
  17.     while (i < input.length)
  18.     {
  19.         if (stack.empty || input[stack.back] <= input[i])
  20.         {
  21.             stack.insertBack(i);
  22.             ++i;
  23.         }
  24.         else
  25.         {
  26.             auto top = stack.back();
  27.             stack.removeBack();
  28.             if (stack.empty)
  29.             {
  30.                 area = input[top] * i;
  31.             }
  32.             else
  33.             {
  34.                 area = input[top] * (i - stack.back - 1);
  35.             }
  36.             if (area > areaMax)
  37.             {
  38.                 areaMax = area;
  39.             }
  40.         }
  41.     }
  42.  
  43.     while (!stack.empty)
  44.     {
  45.         auto top = stack.back();
  46.         stack.removeBack();
  47.         if (stack.empty)
  48.         {
  49.             area = input[top] * i;
  50.         }
  51.         else
  52.         {
  53.             area = input[top] * (i - stack.back - 1);
  54.         }
  55.         if (area > areaMax)
  56.         {
  57.             areaMax = area;
  58.         }
  59.     }
  60.  
  61.     writeln(areaMax);
  62. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement