// ĠCopyright Ġ( c ) Ġ 2 0 2 0 Ġmb an Ċ // ĠReleased Ġunder Ġthe ĠMIT Ġlicense . Ċ // Ġhttps :// opensource . org / licenses / MIT Ċ Ċ package Ġcollections Ċ Ċ import Ġorg . junit . jupiter . api . Test Ċ import Ġkotlin . random . Random Ċ import Ġkotlin . test . assertEquals Ċ Ċ class ĠLazy Segment Tree Test Ġ{ ĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġrandom Test () Ġ{ ĊĠĠĠĠĠĠĠ Ġ// Ġ åĮº éĸĵ åĬł ç®Ĺ ãĢģ åĮº éĸĵ åĴĮ ĊĠĠĠĠĠĠĠ Ġval Ġst Ġ= ĠLazy Segment Tree < Long >({ Ġl , Ġr Ġ-> Ġl Ġ+ Ġr Ġ}, Ġ 0 , Ġ{ Ġl , Ġr Ġ-> Ġl Ġ* Ġr Ġ}, Ġ{ Ġl , Ġr Ġ-> Ġl Ġ+ Ġr Ġ}, Ġ 0 ) ĊĠĠĠĠĠĠĠ Ġval Ġarray Ġ= ĠArray < Long >( 1 0 0 ) Ġ{ Ġ 0 Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġrandom Ġ= ĠRandom ( 0 ) ĊĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġ 1 .. 1 0 0 0 0 0 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( random . nextInt ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 0 Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġ åĮº éĸĵ æĽ´æĸ° ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġleft Ġ= Ġrandom . nextInt ( 1 0 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġright Ġ= Ġrandom . nextInt ( left , Ġ 1 0 0 ) Ġ+ Ġ 1 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġn Ġ= Ġrandom . next Long ( Int . MAX _ VALUE . to Long ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( j Ġin Ġleft Ġuntil Ġright ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġarray [ j ] Ġ+= Ġn ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġst . update ( left , Ġright , Ġn ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 1 Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġ åĮº éĸĵ åĴĮ ãĤĴ æ±Ĥ ãĤģ ãĤĭ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġleft Ġ= Ġrandom . nextInt ( 1 0 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġright Ġ= Ġrandom . nextInt ( left , Ġ 1 0 0 ) Ġ+ Ġ 1 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġexpect : ĠLong Ġ= Ġ 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( j Ġin Ġleft Ġuntil Ġright ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġexpect Ġ+= Ġarray [ j ] ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġactual Ġ= Ġst . query ( left , Ġright ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( expect , Ġactual ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }