File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change 1+ const input = require ( "fs" )
2+ . readFileSync (
3+ process . platform === "linux"
4+ ? "/dev/stdin"
5+ : require ( "path" ) . join ( __dirname , "input.txt" ) ,
6+ "utf8"
7+ )
8+ . trim ( )
9+ . split ( "\n" )
10+ . map ( Number ) ;
11+
12+ function solution ( input ) {
13+ const arr = input . slice ( 1 ) ;
14+ let answer = 0 ;
15+
16+ function dfs ( start , end ) {
17+ if ( start > end ) return null ;
18+ if ( start === end ) return arr [ start ] ;
19+
20+ let max = - Infinity ;
21+ let maxIdx = - 1 ;
22+ for ( let i = start ; i <= end ; i ++ ) {
23+ if ( arr [ i ] > max ) {
24+ max = arr [ i ] ;
25+ maxIdx = i ;
26+ }
27+ }
28+
29+ const leftMax = dfs ( start , maxIdx - 1 ) ;
30+ const rightMax = dfs ( maxIdx + 1 , end ) ;
31+
32+ if ( leftMax !== null ) answer += max - leftMax ;
33+ if ( rightMax !== null ) answer += max - rightMax ;
34+
35+ return max ;
36+ }
37+
38+ dfs ( 0 , arr . length - 1 ) ;
39+ return answer ;
40+ }
41+
42+ console . log ( solution ( input ) ) ;
You can’t perform that action at this time.
0 commit comments