(I2
I159
I5
(dp0
Vmaxarrea.%l
p1
(Vmain.c
p2
S'#include <stdio.h>\r\n#define MAX_N 1000000\r\n\r\nint h[ MAX_N ];\r\nint l[ MAX_N ];\r\nint h2[ MAX_N ];\r\nint l2[ MAX_N ];\r\nint top , top2;\r\nchar v[ MAX_N * 6 ];\r\nint cursor;\r\n\r\nchar getCh() {\r\n  char c;\r\n  c = v[ cursor ];\r\n  cursor++;\r\n  return c;\r\n}\r\n\r\nint getHeight() {\r\n  char c;\r\n  int n;\r\n  n = 0;\r\n  c = getCh();\r\n  while( \'0\' <= c && c <= \'9\' ) {\r\n    n = n * 10 + c - \'0\';\r\n    c = getCh();\r\n  }\r\n  return n;\r\n}\r\n\r\nvoid push( int lIn , int hIn ) {\r\n  h[ top ] = hIn;\r\n  l[ top ] = lIn;\r\n  top++;\r\n}\r\nvoid pop() { top--; }\r\nint topH() { return h[ top - 1 ]; }\r\nint topL() { return l[ top - 1 ]; }\r\nint isEmpty() { return top == 0 ; }\r\n\r\nvoid push2( int lIn , int hIn ) {\r\n  h2[ top2 ] = hIn;\r\n  l2[ top2 ] = lIn;\r\n  top2++;\r\n}\r\nvoid pop2() { top2--; }\r\nint topH2() { return h2[ top2 - 1 ]; }\r\nint topL2() { return l2[ top2 - 1 ]; }\r\nint is2Empty() { return top2 == 0 ; }\r\n\r\nlong long maxArea( int lTotal ) {\r\n  long long max;\r\n  max = 0;\r\n  while( !is2Empty() ) {\r\n    if( (long long)lTotal * topH2() > max )\r\n      max = ( long long )lTotal * topH2();\r\n    lTotal -= topL2();\r\n    pop2();\r\n  }\r\n  return max;\r\n}\r\n\r\nlong long addHeight( int added ) {\r\n  int lTotal;\r\n  lTotal = 0;\r\n  while( !isEmpty() && added <= topH() ) {\r\n    push2( topL() , topH() );\r\n    lTotal += topL();\r\n    pop();\r\n  }\r\n  push( lTotal + 1 , added );\r\n  return maxArea( lTotal );\r\n}\r\n\r\n\r\nint main() {\r\n  int n , i , hIn;\r\n  long long max ,posMax;\r\n  scanf( "%d" , &n );\r\n  fgetc( stdin );\r\n  fread( v, 1 , n * 6 , stdin );\r\n  max = 0;\r\n  for( i = 0 ; i < n ; i++ ) {\r\n    hIn = getHeight();\r\n    posMax = addHeight( hIn );\r\n    if( posMax > max )\r\n      max = posMax;\r\n  }\r\n  posMax = addHeight( 0 );\r\n  if( posMax > max )\r\n    max = posMax;\r\n  printf("%lld" , max);\r\n\r\n  return 0;\r\n}\r\n'
p3
tp4
stp5
.