From dc7bd4d2a3fa34bb5ed51c3b57fde3965b84df4b Mon Sep 17 00:00:00 2001 From: Blizzard Finnegan Date: Fri, 17 Dec 2021 02:18:19 -0500 Subject: [PATCH] end day9part1, start day9part2 --- day9/data/testInput.txt | 5 ++ day9/day9Part1 | Bin 0 -> 111520 bytes day9/day9Part1.cpp | 155 +++++++++++++++++++++++++++++++++++++ day9/day9Part2.cpp | 145 ++++++++++++++++++++++++++++++++++ day9/part2Instructions.txt | 44 +++++++++++ 5 files changed, 349 insertions(+) create mode 100644 day9/data/testInput.txt create mode 100755 day9/day9Part1 create mode 100644 day9/day9Part1.cpp create mode 100644 day9/day9Part2.cpp create mode 100644 day9/part2Instructions.txt diff --git a/day9/data/testInput.txt b/day9/data/testInput.txt new file mode 100644 index 0000000..6dee4a4 --- /dev/null +++ b/day9/data/testInput.txt @@ -0,0 +1,5 @@ +2199943210 +3987894921 +9856789892 +8767896789 +9899965678 diff --git a/day9/day9Part1 b/day9/day9Part1 new file mode 100755 index 0000000000000000000000000000000000000000..76fc489057ac542d56da7ed267d60a9803f37e8b GIT binary patch literal 111520 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%0ALs&a3)E%F&7yG)Yw%r5yioD>_=SgtsvA&PCru zb4+Wf;=!SSH!-OHz-2VsM&Rlc8hIn2;;pm6A)xeZHGh#UM=N?#&QwbHoON;ubCBxP zvyy}pAh8L~+T^rrzTSY89-YXyGhz6B@a^6}+2~ymxi7FO{smkjK8xN&hE;Ut49V}n zsHei)d6RG{obN_|5a zb2w0%cbK{#OAfCpd6GCNX8GvDf%3&4Xvv#wNiO+lIATOhpv~x0f#?5lp(>C8TlN<3 zOF=K?TNcAvkRr4-oTE14LW)GCga!FATS8hA+P>WZFKGa}rv+=h2duI?O_d?C%E&dK z3Msgc{1G3Sto;RYQ5@#=#tkMLB#EuB%e47;@D=-QAt z4iACS;}=v#aoqYPCg>mJV5 z(V)xGzF67?TD?dEE_Ht_&uROYw!x|9QNnN7Wz0<^E-F!rhH(@&ZW@hogKXu&=MlcN zF#-ZI+$>r431sx|ire2`Yh{sg5 z17Cf*g5?`{7}H)nTCtp?F|^>t{tYdtLi0en_9oA=xch)grO8s2sRvo6_Klt8NYy@F zhT({YBr>yn@i~@<5$O=LSEW^ESX56{1yx5XJL8|ezIZXD?V!5#Kviqone_7|ZRbW@ z3RY`7b~|>a_ZV1=ffcKoUq9fjeQMOBsbSluY@i_?9+&UQu4;q4H?OedKVs z;7Wv!(-ebSts3>z?vfhFcZD*mdZ!lm(xS@IO%fG>C((E4uMt`wst_%ZS~0b?G8APK zsx;V&Hqd2bxvimU{ZP!&RoiL`IY2vIL!c#}i{5!S`tifKV->xF`cQpGz9*qeJQZJm ziF-i6*U<5-pW3$z~vcsrd~>&&}*VohAOpG0z%aqb$A)<&#HEu3bcVo`EmqhFJ1YY zv8oYrL_4u3*&%5EWG+w5+f`XZU_j!y-6QPjQ@5D4=+v*^He0UIYwX}n-QRCy7`?^} zD0{Eh=mBLv_Zro!?9b7GO=-uGJaTZWzu+lfh4}@X`TSpINrUzuvL6SRec!k2 zn_d^=J`0q-h)vp07Jp0kf+tMsHL=&EURU-i;QM&&7Thzga+es1|L5=jlOCWamF&N1 zg(ZdQvx?_0E@@Y?ti%{RZ)xg);%P<8iWYTA#Uo2?Q;kvcN($$sj+nLRDx~n=lA@_4 z^A>jLQZPh6P&RdD(Nv%X1;wc?m(H9ub!O_UMXAkJEN+$BqkC$}%vp=ldeEa{En8KC zjZjTR{A6Iktl~vQ3rh^q!0g%*X7)vn*L-&IVhPSqp1OE(H^Q?B`yzbzbEIQ6zW@7+ z7kA-C%5MmtL>T$six&?8Z-nq2gaZ-MmCM!Y&A3LijksuMob6(2dpoj|iJ0OvQdt zUxaNDPD3~a;aY_A5#EjPR)jAhybs}52nS=J^OW+J>9lh#Ir zcOpE9@GXR|Bm5cRS%mGdrij1}{9&vjG7w%wn2#_DOOW{p2P52qa5ln+5oThYN_P>) zB0P`qW`uFL=zaxZ7Q#OfjzSoY1z`!ot_Zgy9Ek7`!VL)DLHH`d^9WBOjKiw?Z-iM0 zTVhc<3gLK!B?xyT+>Y>mgohA5i|`$Ujj%pEk8lmbMAYMMggFTBM>q~)6z0@r2-_k& ziEtyrrnnBI2P^1LtQcX4Wig^bg!F9@GKSLW`L4a6UcA_b2>P#PzF{;4PJH8&ix($j z4m6@-`b8xUjJB5gRvSI*cWvFFX=8#(zAug(=tXgzKa!n@V>m96v9XHrI4Wknt52kN z2n<4$@N01N0nYZ=`1ByY8~9M*4G=o=V}kfINFI0@{3P&xm%&M`Sdl-NJtc2Dl57|a zl)qH@$p=@UTqkhN?|uS}!L~6_YML)aupy8!`ocfIpQ*hZ(}25S2S4{^>lhF$$6DY& zLcRqVWaCqU_}#$&0A7j$eQeLFjH8Vy7#>N{Dj~M=ETfx^lZiIM)XAiNLs! z3l2^FjvaG?IK7iH0(g^9{K_Cc82A|Aw4QL}7X|S-z>9%j9g4e_FoFEI5%{aXQ$z6y zLHUCkugMQ2|2puOA>S@kepXQaEbw=LqniZn>lef$FwPwY-Z2!PAH>@Ne-C(V^*9*# zOTb%)$`=LY=Kz1R7Wq`jYy|!c@Vi6h^GZ$Etw9|RgVXIhj3J>M*DxlK4~_$$54>|I zUJ{f)2mA)$twQl>3Qt8^jN34_1E=>DoH~RJ<_6*9kp+$m^FnQY90mM4%s;i&LkaK; zz?+BKP#CmvJ8%L0HI;#EJOsQx@XOiw0XQ2lH}wq7V?{8J-+ytcYb#N2Z;aC*8c z)DP60$HHx_mZh!!_WH!MxZklruSq?*={rc$G3h z$6{^6Gr(5>$E~cO4aGtElfX9t$NiNcJ~xQ}34AZ`+I*0V`IGKA)ixe<1AYf^es0ws zw+06FPt@|Y`S2Rx2O-}()V`HL`Q5Lzzy zRLhN?zEK(Ly@9BlQrSN$cXm`xuc(Y(Q7wB%rS^_W1iyEbkKZ479eO514-H-RA7ZhK zJl7`~H;HZaeo8c6PC}z6N>!Ro|3BgX%ROMfk72)mVZU!-*Ezi_LVtGre6_d><39ai zNvHn!CK|4jbTo@6EyGCCar=D`UUMK#(+&F_3j6&J>MQhzCdhw3|9x>Do$S^5qt)@> z!x(euPY1>^jbjPVe+#sIJhvhxQKyH#`$0)s3@r<*}*QaN+o5Z74RfIBwg8sgL80HIBJ0HeS^6HY(ZpUdQcj5uU05JKnrnyqAvK@^f^Yr%nUQ7#(kcbNah0 zl>>SKmj9kjRpAg77!iJTLemHR$n~rjF)s=w{GLOj`O7hba-{fcKPCToR=cNdsM>*>-gO||8qLd%Y3BuZK?oX z66180j`K1e@%wa~m&Ay7X|DLTeR(==+rLQ1bzt10Pi*~f>$t6NT1%y`rwWXHI&PQm zQ61-{9ysT8oR`OlM`=TkY5DhbyqS()&~aOT7wsrs+JZAz$9buS_+A~i^M6ps?fU;r z$D_6W?{(a^udQx~y)|B}<94rFt>d~{jk|PQt1({Jaoe81b==mM+g2&I?Hj7&_OLuf z#|w4-FY5SI9dDkdPV8wWSH~TFI&SkHt;W}CoM7Gt`c#APQ9{Y+u7=@H*I0zZQ74J1 z<{RrV@5H!wqA@4B-5>Tx;B!BStdV#Cfu{{-h3FIYu7E_MPu95(FJRL7;%=Lf5M|to z^WHn~Odp*Xz3YusXYSrpZ^T9&l6<`v>$4c-AnQTF5}zk|C#Ki9dL-1x7aJvRLmT=X zkt^M?vF4{Z={u}1UW%_%ml%DgqiMy~4JU%(%?uzCE$Jf-hWFEch{SoG!MWSW3qu+m z{m4SoNEF^aAWKSG>h{bkE-_flvj@4w#+wg;<+%grb-eL@aAX>OJh$cHEl5w&K%6&R zy$xS;iEHmW;X+=YqXEZt&>7zVhsAXYyBMiSpNEeQ@^o~O-i0jIc4DUr$XD73!q?& z_aStLxC!;11G3AzCK{26Nv|NX*L!3uB9qvh`@A0`gSach?u6?f_Pzoi#}$MRLF7sA z_WFoSX4?*X-^CgxZi??sD0s>6tVK1%ORkbcm;4X><4cC9k3N(jE1_{2UZFM;6NEJk zy4(r57S*IXVUx8Fs@(}U>hvwvbjG(@YdG9y9pdmN>o|wotsgktVMPulxtp!l9PYFR zak$Hx!r?8}JPvQQc5rx`^)!dOt@khkLD#9NuM(<#3<1jKjOF?Hum6 zp5pL;^%;i;Ef3n2JK;gAHHQyd{WyHon$F=rt*sm$vJP_in01uH$E`0oe8T#R!zZo8 z;iTtZ*4G?9WnJL#X{*5qN`J=c%HhAQ2^>Cat>^GL>rM`zw_f1zMe9=zU$Xw@@QBqM z{oI}Kvelo%qt*-#k6EiYe8swh!&j}t9KL3K&f)8p3zM8X;SH-khi_V)bU2#Bx2zH! z-o)W?>row^;P8ZXPKVK>NzdC>I~|Tdn37ZBtj(I%_or};dMS~Afl)&DG4be zikzL2;1^Nk<&=b`B8uFblF(8_De+b!N{P1?Q6#>+7(GGyXjBnbL=9Ph23W6aB)tvQ zY7sTYdSk3KM7&w(D)q)i-U*&Dl#qJkV-_^Vi0CnldvLh^fHJ{wgECA{^(ID~U1=Eq z0`!~>8x8hhey=wv;>Q(u10Ja#I!No(3?K!O%_G&&`U8+(3B3rlMm%RYL&k4149klF z4hLtbky-N3WrooVsTnpR+$fiZ=g8bx47GrUIq(%Il!oWaI^a$PRP4ZEBpv%nDU4bv zmu6$;M}oK>_%?^bIVjF`vcY1_c>wt14u|!`zq18;Hpo7cu`vwjT^n}sNFTofLqWZA zxgEE+D*>IiVL_Q11t%~~)!X?Z#*n&*TQEEphw{vd85s8J9h7fw#9ktq*xZ2(IR_4O z*UOLTLuGZ>%dJld!*bh0Vz6&&f7}%SASltOyEX}PUb1L-9{$cu9Dp`49bm)N#b6}$ ziue!_&xYx^pzNDQR4VP&}z*qu1;#o=m1CbvF}0X%6?@}F4>eGbSG2aPNk zHJ^(zxu9SPpCC87iPf+h_>^0JU$xwRE#=(2xp)c%#Ax90I9yFbbDNIE7ollDIymU1 zxd}sl3Yw=iT4B%2MSbcAavX&7U6X;X56}M|c_y6GOF(9X~232Kh4mRz`~*h#$a&(O_&_`A<>Dc z=!J7ijC`>a*%SCnRWNFBJaml{avau`)MV&YEU}z~`G@Q^qCUl}+hDGctJ+}O7Ac)< zk`Z;&b%2%%xpgi&Jj5p0kRYP6AnI^mkk$#gKNah8kX93kPC_$T-wdR!Le9mqg|K^S zBC%Wc2>IC>MS9gCadzYkm`naSAmqey<-4zmR0@?w-DGs;20ewJiYh5RDv44a60&%Q zVNgOHcwd|S`8+`X6fzTf$ak3pkshV&>Y{nmjRsE$IW<~|MxDWU-QZ~<7rRx$m9~Hp zQ7=+0vJ7`}y0vl|I!$thRmNd^YX^s!)}0(?S>1~W?`RF+u#+{K!)&XN!_L+x%7NrJskG3{=s-}>t7u9v5s)q*E+#rKMS8>L4N(MF^g`gI*V>fLC$B5?C;Kc*xR{~QJq??KrKjdrhvTlP3y)1bsq$U|}$ z#>A(Pdc;OVF~K8gSoI#NbKmubu?PvD0IsM?neuA^?jifq(G_e!jg^L^@2)f)u?q%- z?}_LLYp(g^2HeNKGc5iZY=;#=BzysZ_77~IhC;=pOtDs=8`XJnJ?6v3k=zpFQ_!hX zu8}KKF#bc;EF7+7WaCOkR>w9)&k^EUq~Bm;VkHrjXsK*F-!N_mbijdW(Wc=tS+LzO z{tf7jDzNB{sPaR~K{>M<)}qk)H4@J`JkF&~lK>1{5P3adQHRFglsSMwqdJ6^8gHTz}TH6`!D%wnU_DK63A643@w`yfoCV#@on z>rf331e70y{~ihWV>!JUe92>r*Z^p=1J}u*<}*KXE7eYHchFKQ zXQH3?{Xbl*Z z??RI&6(R|vS|c0^uX7%k#3{w9xtJSKbtw|F6J{*ph<^AP?2xTCSURLc3i%o)YcU1s za|xs7udKBK{XvKq@;Wp^Q3`N#H3BVMQj&zML=NI^fDbtYYS4yB(?v>CAxqJnxprOw z;Zq_}0~K_M$$6;^&De3EX9)SqCc~hvEq(*l7h}^|19u&hX2g^nAq55knkGbJu+khR z2^)&kTgbCmq%f&J2ooKWqfUg-`w96ooXqqkpzf%J9%?olGepQu!?oZ;5PHfHXObBy_kegR)W;s}U9VQtY>Izo8OURe7mSq#30`=8P>4v$D zjNOd_qQx`wE3nQx%n)OlxmU=2OEoj94n%P%SA-bL%zbDTg_@ZI))0qT-B_mY7xE6Y zb2ecHs7o)U8)htxmG=v|YoKOs1?x_S8DcCm9~AP{*_!z@Sg$$E5M!D7sF2s96LIce zgY}2QtZppR9~ZJNx&+hXFq}5Up}gSGVeBjz`;?G>&(+KxU=4Mcp~e#PIrwX|X3__4 zmO0E&V~P2qkT(s`%xz%Z>oA?%?T$?Jqe5Plrs>avdg4;LVfIH?PkBv93u^){))}xa zILr`ZnR#5u6FHh0ABSr`9G5f$X8uRW<-IhsCs?B#W_4qk{=Sf>Fb}f{#h|Xblx~<6 z62^WiWJh#cX6^#(K8G1%EHl3pGGU8mz5v$S4l~5F%see*N=wZ=3zop}R;^yOXPN%3 zkS5jwY(fK2+gwUFq6Q!_<-CynFb2~IG6?aIt~z=@MuL=!q7JQujL|#Yh#9VUa*oeg z2xq;p9BUIINGe=rznidDY;>*lZ;amVMysuJ9Im%U&!l*nwTQ!w)@BYjS$A`|*?Nk@ z8?ECUZnZ9OxZO%bJ8?I<*-Gc|7HbfPw^}neyv^Fc;U4P%hkLD8IoxM`%HciM84mYb ze{p!P)eybT-RM56JBJ6XNgO_4m2h~_+QH$ugeIK-&k03iiT_K&Bb@$Q!W$g^p3nq+ z(%tBfgfBUMA;IMMp9wuEOr2uUrl~u1s`V+yi>&h;PPe>sD1C;N%;8L{1BbJ$fgH}Z zCUba|wUom-)-Dd`TL0p3f%OiD3#~smEV1gN3%gSnTU|L^Vol_5nYD<+<<<=xuCjJ= zSZW>MaIN(mhwH45IK19E%i#vgEGB*BRx1uSSsgjN(HexXgC7mVw^I})VzF~mOPuc& zku*a`jmMzmLm%C}0lTi)z1)FA%z%iv7iUJ@Fw7#pTSX)-%_V_#X_4)FNbo9KiGL{M zKhl)=hgHM{MUA=}D8mCHvL{+po2HWyIV0rpbSQ*5Dl^Jj(-%K=s9OBfGWv{z?ki*b zhh#fUOnu+%g4DjZx1bX(&bfo2~cJHufX_2noDS z0<6z_;~>B{MsURNev3l+AB?*e*i*{~hf5Ql=fxUE_G1^EK5Cy3t>a95(-O&)Ijb_s-Emd|7=bR>`~ zYy}3doc%=|hmork^|;JHnTWCq$6BJYq6WoLQ1p?!CmXi|kh+f$Hj=Gq@Fj+P|EID7 z?dl0YFI0tFKZYjj|62Ns(Cn~F@e$xtL{Ub*kJX|7TbYVpKt=csh!3k*rT;;4tIDJW zx}5(zd6x&33B0k*F&eyh6_E3?6MB3nr1r8ACD`be6@bIVf1!9ZprR_Upn1t?R7x$S ziFo&B>=pqptASI8`n`p zIDnS(B+yTQd`T#~plysFvOUE22&k+VfLO^ILlwvORPZ6>)EZ7T7UBM8h z+}q~geL=WN$SKk=p0A0}sW}KGLN;55hvpmtTg%RGQ%)6hy^s&Xk0vgORTg|kKSrHJ zXu$sIeGdW`id`<`y_hiCJ8V9qAA>g#{4;%@jd$31jQ%{P%L0eZS7G#HD0SO~JdIIc zwL{?Yu>*Kf;lD-5@mXq7v6o0}J^dJs+D?FR`$ZVsa0t+II8@vHH!9j_bQFtM{{it4 zmN@?b^qm7cD!9&cTTPz~_CLg!NaTSXnphmcj;1&kk5|~Q_Rx!5k+Z1ntEd zsO%y|#k#BjbC~!Lw4Z9BhMMVh$nB&kpETQ z`7SvHW0V*Tu*f0MWEZMtluM?dnTV^wD0f)om{8U@mwe|&B;5%HJ#3@wqRcd_Bh4qb zyJSO*zTzktZ`&+2r9U9|1IwW@%gkNov;F?gRhh6fc7)^>z#lVLn=m$fQ zo_5K5$7)h15PCTz?p})Yx=Z%irb!b(nC_6+O^Os_%5m3g(rOUO9TK_9FniG`+02yZ z+o(xY+ylY`MB;JGq`f(Rx+(prXYRg7fW1aIO%{g2vrV}Vs}k<8UjsWsILmjW%{zZj zGv@{+ZelzP!=a=V+TZj}QNn&8EeK`VI#v<5!vT2u1+PLp+V2 z=LuKxwCm_EG3BbBy3`*7`#gx#wxjv1Ym_hoc0U-drUb9!!YAl1G_GW)5_C-mnlCn zHGUhgJ009=j$zsVuqkOXMLdD@ql7uj12w}c*1t`8eGjlc0i&V{%dk#vhngd%?23*c z{s!o7qSYAYf+%2bnez5-+JqEfO$lcgTQlGq|2L*gMk5eike+AD>M@fE=S+DG5olkv z&?XqxZp;JzUrhP_)xee_eWin$v>WRG+mscU1!?Ufb^_Z&xN3E@9qON&y@+NeleR9IOGdf}i)!)Ir4G3kN2($?? z$N;6283Fe*m^3K2EM&`O)j!THeK|U#0uYL9lA-XaZkazwn|>{@b%d)nOuMlD zVz+#~kCwj!*gZjc#+SS0E$|^(DV_s%Bq*OV8S>Y=Qd)CrILrh{hYf;Grta*3^5sTR9=WGQMx6at*% z5R~8OHl}}&N3LG4wX6qWt3y&QVbU^>Y={oaE_nci#~qTIPndM0N4|sZ&ZOfYeC?2U zQsu!$`Hks!cx3!cO{Z6kqFdMn4e=W@AM(h@hG=Fhu(GN!4U{HfgZ}!;On5C ztV$12e6?4e?x%DA1uQS-p^*AjPG_Clyz+$sjxI?dhq}y68Z#P8c?aegIR!=wxhr7j@l zt5Y>;3J43UkOVWW%`{<8kg{_D4BG(4W}9W0rHjZyDfi9LM%@SO-!>lfz8=z;euI>6 zVoc;RybtOxwa|moI-h+~W?^Pv!5H-2);OvaKIGy-+4hW-Q|D-zzTjU`i;T|V9VsVo z*7QZ7(!-C{vk0k5F3)KxZ|bgP?gjrDM~17Ce^jew`X5sE8KLR#fqJe6dPp;5nHZm3 zg|UcB9*)&!BOJ=CU>2$^GQF8kUe`d=JA*p1272{UTd|5)VXM?!bA+wu;KRimdT}`e2wC@%OQkCom z`|%nig0Rx4S|_=fOW`WI=P1`ekx4HG!Vl3Sa^nVy8Z}DknW3VzEW{9!O{4-1r!!|kRJ{YV* zhgscNriX{iomXi3)u5JNN>}$p{VCyc6c+fb_#UtxbC{vV&VsRN;j-CQ&3p^2&m3l` zvBb;|m)lIu{2i>Q4BG*h7)$gk!{tz1n6L>gLCv|8uI`EY7lz9M>hs)jQvTW=~ux2{U>c%qNwB#4I z;x(XdyOgf(iTdL$dAy@md=RW>9A=2I^mK>6nI)$z#Zn^?{q8-mPCHDtihk6C8~z+i z_Q1G8w=RW|iOnkG|Z3@?RVyGHn9pcjA3 zjNCig;2sCsd#Rw897NNFE=wdKUPRF)uKlZUL4=&1B%42`@)q3$V5w`*5bOXV@jV+* zd!S=Ttmz8ZHb1rj0R3#k;%gFKD`=0j>D8{tdhqkNND?9vxv^?RG31SqNov;uyyrxN z_J|nnW+SW%AiJB5wEoNCC~F_5PqZTDQF@Wpg2S0sZw_Z!;}GV~u8U{Wpg(r@GF)HJ z@;r;;ECL|bBXKKbyc7NsKgR9LpGo)+K|~u=rA@6&26X1$iX(6eWRV8 zS9NZ*|7SCvmI3o`93mTth{;CQ&W(1`A_=VdMtcVO1&Q~DP*7Y@w3Zv~=g}qRJ8Y6w zIXXAm{nw&zfKX1PZsZ5&MtfLSW$1nfa&EL!6LIdXlhJL$u?F&85U%gh#(sxDWWnh9 zJbE|Y2zOT^r3tqyWi~&=yA4gxxL(9>P?FiH)ukH2k4=h+6(YrPqv0ekHVMs95#PYb zhVy1nWJ1(w2zdK9#jrgo{0z0_ewR7dbsmlWSwOEi@OXkZh;P~hU+kKRG43M=D$Sg?wzr(s$yR??5# zpzZ;lelXk|8*fZTIjJ~pA8U_RhIwP&8!=LWQ0GTQlnivI;IF10$rV#;VGtoB++ki-2 zY9r!i%16PiMLGn_0p0At{P2{5(?uGFp8EkkRRvZmIO{A?im~(!z#ll2+kzS7h!Ggz z&jR|@f!X6KgRY_!Q;>z0+yDm~E=W4m#(+q|ES3(ur^BHlFwtm~O2r%^VvsTt_?0$C zRnF+o#{wQD;(kRP8Ewa+Wt(Hgdpl7nNLUN)WZSqZ6sktCgj{Ol#qb4GQ!+21PCsmV*? zDh03OnNsu=lKZ2oEURJ#Y);gZvB>X)kaCHlH|<^}D~E23Inf@>Z^Sb<<5~!$9ynb0 zz!D>yksrhpH^MbYon#~8A%c_WnGW-QQJ;GgflA8t9TmB<5lGjAvY~dk7Sv*i+WW5l4we}l}kRc1*G4QV)n2z{TErO zir39mgjP`xP-6#vmS82{(@7w5$R!8% z(j@wCG8a1}vdOUM27>vWOCB4JtjYo2<`B3YP4=#L8ZgvrIX;jpB%yTzqN-hwB(+%{Rl% z?xt^{($x+~7NOkg723~SgSw^+1_K#ED9a|%t#b2Tkx@<=(yelHm?^tluQ*~kh}Sx* zlIX1$bHC`g#UYO~k>SFNN{Yat_0z3#bEPStDbRRxU~Pjq-6}WNo3hC^t-l|z!9kpE zm76!3au>!q&VM?vIYFFmm76!4@_r1mT+i!)Z4Banj|6_3DaT;d#`u0<2OXSma+?QC z`A0q2{sPk9AdJe+!-t^=xC{PGJ0yJx@TV#Sq1qMQ3O7H&a}olqu-=&0acCFPt#I?S zDW6!TO=txyop4nJbjRBKuPM{lsv%qq05;6Q+#7t(4alc$g<3He0#?*iu`G!S5ZJOWpEQR3*!A1-3INPj|e{HEwxivX*}Y*b_nd zjcC;-Ze|}wzu`sw31IIBFkyJa$xN~r2o^#)cQbGO*af*W*@H{1%0kpz<8$$ z%di@w<%bF3DOm%;w*dce2)sw7)O*(D346%pIgb&LR(7t*AWXMOhIz|4;G=|RFbpB(uGPS{*tlvDs-BO- zX7fF-d<`QPGw%oMshXJ7-prF;Dc9?D)H`5(MNFrks^?W_6oc`NcWJ8T^@roRaJ)#H zF}*Er8hQ&mD6|2g?{iIEHv<_MQtrVx;A)TbZa9>KXmM!7rcXwx9`HPmi#|4WH1Np| zhmthsNl)wLnzI~uSrv|8VxzGo$gQ57jau0Q{2va77f`(BRh-81;0ine2K+=-j#@VT z6W6X`c(bZZiK%w*B4?xr*bS7&;7km zLPyPa={B*b<+INPN+THg=W7mu(72qQgJqk#!$$PY5V8`g-GOUF{UZ=+GVx zgQZg(3M_RfDJYfEFaQh5((O*ZRV}6A+qRS?I{a}BD}5qVDSg9+^JU+6m^&Gi-M)_; z${t@`Qp6NGF@_y$hQ-Tpv#2F5|3TxvkYmi8QHHhLsxaKEI10~amxDDd4mH_!kohgv z9SsI*s!?|!yqdJnXT1pNs7+ohmA*GU&Fd@9H1HfhIGawvx5U+1CRq~Y+Kg7!S$L*) zRFl;P$VPO-P{A`7TO0N5Ql!PWJx{`+l=22~W}r$a;=F|(aj*zBV>GHUqvR#m!IeWi zV_TykVn#V<+ei^{99_@|Y{w85{(xt~PJAANBLL>Qs!B8{P^L=w{kYO>A4IUSj zYDaJtwK>HP746Y?+hw5>B5>zPI3&{`8X04x(z;l$VG3?t~sXYsB)KTMxWAFD$ zmuC+!+8}Le!DEUhw+8C-Kak{k1&iKg$Z8@)9I}%YZ#7UC6~qyIw>(!y zVTuO*29aNpk_K@dezxLpC6yvZT}Gtf%*d`s)C5-?9D5J&=Pu=_+uSK= zOhH3}RwvWb8E6Enp@#;YpP?XFDfeRnH7OGp_&AYuwH0h>B%B`A2iYTqtvE;*okN)f9T@mm6S|BhL8Re zps)`J`^6Qz4@qBE(VzZ?yG7Lplh3~NCit5EjQC%8hrxdO}g z^zRi$pXFlA2>TJI=|h#D=qp{yK2}WbhO^Qlz$kM?G(||xqHlPqs!)Wmb{JgJJtnsZ zzUM_PM%UpEs)jL2{bMA^O@=FyqJ|HHpb@o{?0(V}QH+qXpwEF-XNLWN#Pq336@9^~ znx%sEMNL4*O@Gc6F#;i}YE4YeFPLdqc6*SnRI2D3Sc;$&Ji8LuGp>lo5RwA=^jHWU zM$giur>W|2o_bP_R@F}TA0;6%6Vb2J3%NJY2g{VfWQGxw+8fYpuJ5Bx1`7It`dukQ z^jWi@@kY$;{Q!++h4iJfP=x_f_%t`hL=3$lQep270+eSm)`Ku^f=(3+N;7q=2O9 z+kl~YGyG;f3P`#g!F0kLBe~NONdMlD0+OaL2?q04-9mAGtw$V^T;iw*`h1g^eHG^P z3}MkX1l+388^9fdtq2?}sP@45U1-^(KKIht$1pg^ ziE{FM#S`s8?nVNmX}L;g2ES|~bL-RPmEiY%Wl!}Oi;|u!=?h!~Ko#@wv%-<4GlReN zBYV}SODz#gZ^X+P@~(8;nWjN{FDMU_02NHondpf#^{fqE;^BRa_@H`N~S?a?EUt1VD6Oh$Q#JFrHc1FcIyPR^2DYLIJ-x87M)9 znbVrz2G&_h4PIWPH^*o*qYwiIZPBEU$Ivo+7&LOMd=XyPd~3Ci{Q$?#-`!Zp9>V;z zXv;PgHc-ZGB^AeiFdmiztO2 z;g)xz$rDjD#pOV29Iiyt#WyRh3N!Nrk=Mb4me(!6&>S%wCu1G5nE(e`mRlZ0keKp0P=W!u@X9A2=&{57_56 zu9eVhV^#~doPi;Pi**46FFeS_5_D!H(FTfj+RQmZWy>Mk+qz}144rKnI5{LiPE``- zmpede@0R-;>AXjPFo{UyElpZM1?c3KKVkZ0FDwONO*KtB$nRaTmEKuv+6}_J)ikB_ z0V&rl>AfSWJMlaSM{SbYO`uL6@%&=-ETkdHBmL)ND5NG6iIAHNEsLBc(>4y8tO*z; zaJW9FHeolJzc5TRLu!VNh|^V?Of)t{oF=m~OcBLcuqTnk879;HZE7+mk?kf^a)aWC zwIJT$kew#;7}js+sEBt1yPt42%xN-Z9kA9%$;C^+-m>v(P3A86f|XQ)@L!u0Y%)E7 zvy!lh*a*SFnN({s1H*N(+JVrSNK`CAXTc`(YiN@xzEWp98Jw#~f^1h3PLufr-r&5~ zfv|;0LA9pcWESnzn(hbTv1*#^CSzf&V@+>?@KH5Qc9Ut*9XEx^it`}+VUtvoq1F)6 zWJp)5r@MfQxi$jVe)e438DmTbG@;HoTo>k}{PtXXzP(`#p~ht+!h^hwcsmm3C@1G1fl5op!37g^cA2^MEcA5;Wr!odI!MZyYiT!>)l5g~93oOdoVm97 z)e2q<A#y2omkN_+3nw zv^6;inX4xo?YTJZW^4dZDs2R+-9R-LH%rkoEYHPX!p7iS{Ka$~`vHc`FPx`iJQv^7 zPsQxHn4T1r&msqVE~W<#?K!s>GPUR2emHN~stH-KG>YaZd(QnQGz2{nd~m2geS??= z(4kZG07}*E44_l%K-FOA8G*y~GazRG{Tfrsbfhk@5pj`VXU@Hz#zcG0eQ%~Bid|se zP7-d+BEdQL>d*mn+%UxvM?iedAv*(T^lI#mKwNwc>kOdxwb7c+fbdH-P4)ol@2EA!pn4nN2-Rc{ zpugZMhU!jq1fi=<3hv7^*9be0Ql=jkjlKhq zj-U>kCnK-Jlp{`Jso|r~bo}f=?m}pEdiSC%2)?$FX9g|7@9E-kSJ*$3~#1&9tgwv;*!=J#9 zkAFD&V;K5j4C=H)vv~S%6g`q{8|N+R_n`A7?Qq^Qnf~7e&wezm4z1#7 z;F3=gcyJ^VS|{9!Ts)s_#d+H#+R^YVTZQwq23YhNo;~q6&#JS5_+QpI=^W;&U5Or{wwO@ymQujHgCetOX^7Hr{R-M?UQ~d{tW2vlvzKP(kGzoojTNSMdw3M-cDKdd(pY82hO`B zaHUzWty8zUT&}cSoOf5}_sqn34|Ohx-#?KnHk|m{KW&LWQ2FX^;tx{i_j++YR>|(C z^YJRZ7yR6*D1Hdpa5wziX?gY;RbYe2VdP8SmICGguz(-M& zk1waI`A94_JR#(52~%^rh4C8YiiJgUjqZHzHaw4llGDR;Ggy6Ma{8E^Gq7lOMEXWi zV>DPKkI#LErwb@K{XDNIks;>iOVyTy%4KL>8ef&jFg}OK7ogBE_-rrFP7ozakUR=Bto(8n~j`UV)Ka>kg^m%Hz$$WcL`_7pTt7%?wnJjz+j z?oOPIRJMoC3?H@rm|hq&a~@_Fcdvpg^)Wu!pL3`_%`KB^z{74|13X3*ioO`Coj5xM z$p@4(=mVna#sE+1R30PjwM8J@spM#*O%Zr+Ijla_z<4u-_R(nbEo2`p=4(_&&itm- zhG{=eWfwDk3sR5q>VbCWf~C}@_}6maZ}6&tcI_^~-yknt&G#2*H!q0e`-Q(? z6;+{z1JQtDI)}$xhjj18`M7qB;Qv0!@ZJZcb7VCAFH-1T6@w6qGD&=gxV9s%#@j@V zFK7?!W+eIOzn0?vtBU>`CH}vvkhlrw;}60SzNhHyS}YoUFX4=d^a)ia*2QFnth$V< zLpDfC=l`6ldm9XJUH)*Er_b!#H1=2@ab@ETBsV=9Kj+^XcL1%`K3=Q*+0U<~A zKl+%fY68?Zb#|N4VY>VhMfTH2URAA712)1;jB#DcU3@o&KKxp}zo;@N66;S^KwpIo zD$piA9tr#rWg>kpmXlR~S3|^gSRr)zS`o%N1UfT(-%=TVCMKLn%^FPwgS^hH%4y~FCG7j}L05~HNIMZ@V; z(r|vKu^i2+Yjd@VYO)izG&1VTdEmZ;C11?)GJtomGwD4}u@B`I^roi~vj{_0w`{&! zPp@_=h+YOYVipsWRfi(^b}V(y?Pl=?}OefqEJU+W-P8` z=r4RSe$vQmL&`9)bdR<^!?>|iJQIOPthGxlX>W9|Tc_1?kQLqQ$+O6=U1N;C$=_}_ z40`;p-76S4{P_!YY%H2o^E=QA2{Ys&@LMg#XePR+$yQL!!kLR#h6raz_X-j2)?gTJ z3!ruk`2z_b;+*@)>9%lS6`BPRIOicdI_ntaJc91rDdBeDxB52=kCXds;Ynkz4iTP` zu|7n2MlL+3%)SczIg5%G7{$p{VqwggU%1ei*MLeOjJf|o^PS&8n_4)7vw zKHZ120guto3-t3AerCCSu|L6TA8q$Y+6@Y)tv(<5UDED`kD`*ctimbHN1Hm5-ee7@ zw_U?28cy$uhFjVAp>3D&S4jcAK_~}-mqusd^ipIvo%!hPFG;TvhQA5_q){}DURw&M zA0NF^#ovDNeS>RgN$=r>C*#5>jeu}^v&lyn*ODHi51-u~KcCPKy~LG9Ksf#QC@Sf} z*ED+RC;VlIg>TFUKzo|u-&1*M4?LWrzSPMe)5b!0G=6-vwK5_p27~{1#%A>T^%}J6?x6O^5q)cYd~26FK{LAf(kdA}0LfFTKmpzfyxv=eacCtF zH5k+VJ0p2Sd&F1OzbaN`z;8h_;-fwyDSoT?3MI4uSLb+0(Vy6To4B(f{)h5LDn3F5 zNIwsmf&6v!+j#tOZJjfamfmhVI@736dzW=F7FPeyF~#mwq{dOHlHeED)|p20mIKuX zUMK^M5&S21-wd9!UFPgGCZwTMct|pdT9Iq(xP-y2INn0V^Al(*CgQ)QrQ(66v>)i& zn(L?krZVCOGj=jM66M;Np03PIQ@KSsxze)8*+xl7Oa!^JNLI>VD(y&C|NlY7?q4BP zub`liKJVR}UNq)n(Ic2IwpE&g#lnAjdAWx!RrzAv{wn2*ad)m#zF2p>E?>ebDsQa2 zjV`BA|0guTO~_=5&KfxXiQUg5l|64L6I&D%6dQ6zeQG_ft&^M5G9E77E%t~L7`Nrs z^+tF|v)%s{f#1n$wJR;Gc9q?gWV^u$PG|y!lJF>`bwd(zp)^2KxNxb% zBe(GDFI;GE!fjL9@@ffbe}(2!LV?oTa{u2q-^`w!JuB^=Bq;HobLPy#hcx5}oRKUkskpt|mMol|pC^nm+Aj2&8=w2V#VEHnyOC_+GM|@-5 zN&MKSG)K9y$LK zQW+)bwGSn!X!L;(-g(J;piRtuJhFxsy+j|l|IWhw$jE3Jec--3u}eOhG56DvWik<6 z`#?J8ekQU&0r0Ud3a6U;S^a!t*C&9+bN`3Vzo+Y=UOazJz2}+T55wr(KhX(K-07@) zY8$p$Sf_@4zzqLue#0Jq@>8lV0A9d9|0A-hLP00!d7ohSgwU0fzz14%V4tEMIsZP? zW$4O5k`v}VzFL(YJ4j-}yvK!$f?be{F(D1?F%A44s!$F2VPs8JLw*?9L=HdTBm+7Q z`q-^VJK%Wr8{rE<$)DpN!!hw!=MYu)-gm=6aR*ReJ_X$5zsUJ3kh-2q5oEl9&LLb& zNq@5xu!ZX`{M)_TSwSm{-h_Mmkom}YTEW6#K(BouTptWRfQ(lXVE($mV8tbSAm+UV z3lm{Tpg*BFz}$66tpfOUw6n?q$yWiHdyuahV_%OH)!o@aM&T?#W(BQa{V+=Y_zKmM z6Y7GNJf&MA?3d>ki(5MtApQIuN1I_n$UfS z=mxEb*)0`S=*C`D#KJBGA1Jypwvg@#I@ZzZ7+OC>f5Jo1@DHGjfp;S*v$TU{GaB+) z+QG91eG!Pk9%TR-~?{;xsay zx8oyYcqrl@*L93hk23u!M(X{z{*F{p!SaWYx}HjL6$gRVkK^Gp_{UYOrz*BmraSQJ zo4B5lDps0a|2CO!2iYD0%{YMT3H%2*6?qr_Md-%a`4C?GF7BSdKW^`NNYc08v;j5cuH@am4%3pbzrpL;C0KjEbUE^U ztmPW|qO;=X`yJ;O$Vj_x(I2Qe|3%I(Jy+A4Qw|n`U-91=r$JO`#e6?a@#gJifTQ@CQ+xsHuNY@`O z@8-p8ZM5jCjkL};q;a?Q3e@z%KF~;9cjDh}=MA)cZ7tn@2BwYI;CeHqgE4l}9wftf zn8ZJB5%IkWxNfD4Kf4v19^!hD^c_RNf06T#Aay+zXA(f$4t)|2{}cbXE)vImby4nJ zNvwRv^^2XV4#-&i2OSux>!~=`Mcb*@f7z8)#ZbX{50@SY^f-HW`I@z?v*k?CH@1Gf18wf zJrYnRi4}nt)7n3j!Q(IIXm~R0d+)yYw?d;`Z1kb@voOMJDqg!^LKFfulUEsvel%Lvi`v&y7`-cZ~W_}%ueS!QEVw5SL2^4=B%Y0 z?HG8n&2GiNUdrP<6nP0Ge$G6X?4zd_BL#oYUZk$DqTP#C3&%zP+w7=rdEjvT_r@^V z7p>|i`R?I6<8J^UcF5yhcgDX13|_F9?3mF9zIQfWm;u z>TLW@q%Y>TEf2gQo_;@Uc^#Jl;-e2daV9?hT_C9P)ngxuyd-VAO*IV>#Fv zN->zzc4-rMID>y&1!1tWl`<{;ZLIdkbzV&sA3^GRDn(TkX-Bx|U7x|@)A*<6ry6xB ze?KPbhq%57kfXm!gMNzC^;Db@;%bc6mnF{zl@;i{?Yc%d30UN8vpNQ6zdpX^#% zR;F8ma{80;Ms-&znMxT#BA?v*2;P#_z=^od;1b-^rGGj4)f2gHd9-6k`%ZVDJ>N07 zq_2I~@{uJGup=$w0E^pj=BDd2bb(x zPF2oZs9(4HU*|h2U%hA(YNiV2cm2mgPW(mwaA}X-Lu91&h(-6 zOC$kfK%c%?SKR_Su(Z0KzOINKpi3y58o9wGlyw;r+WZMP(51b7cYCx0%+UV{R01KP zCvwA*ktK^Fi(`8(y@SVRW%al8hgMZ5>k+tYNhI3Q-mWHzhWB!wF?51vY_%!m4s^xx z9lEkk_1Vs@7An%!Z}nl#z2_pRmfl^liRbi6f)(oC+MY;!Nxnlt$2zLU-}bAd^E?HV zeZA|%x!lz)Ry(gTO+#jy8r`-H<^@Ben#hg5MCwQ-d-pyKPCY#igK^ij0N5^BIF@ zViQW-VCEN))=o{k(X@ysSbcb~-?;(r4$AklR>UGpI*$`d{gHByF$D8Nv4anL~mpWljfMHIN7;P*7&fFcG$-+bRJ zBgEu`#_+YKHidguWv>&MWTLC!@uZrD_MJFubD(PxPg`GC3!=gBqHRalb_JnS`7KKX zLT|kfsH%nrf^rW=7f20N&yR@M6?2)HPa03pGz}eDXb?pY<88f6bqTDJ(&es|;0+q_ zsET2!qN`N~LxuuoN%bb*(T~v|K~~r^0i&(hGFq3pQYw=&om~!9nbEJK^4dT4qxMUh zofb8{V;a3TQd^?=4xV`UnRob@*PG0EGtd!sBXUkbaSjv!<4be{6kyl#Rr7LqJ+A12 zm71546*f`e@$Z_uv+MEbK-U)P$An61+u8O1kOZ0Rc0aU3vLvupKmqGygkD7>(2Q?Q|^iY z?-cUTJILdaIY4WF^cA- zZK+*JRd{xOf^s=pQF6*sO06;!|j*(M5f=WyycqIH{Th-+_h<< zN*#Syq%v0Y{M)LWjF1|CN`H5yK3^N|kL<)SQRwSBkoNb`>FUmVD>Wb|eV59=ud2ME ziSLh81Rx58A;L@?`vbaJXgu^Gdh$=&gFKppORif^=uOc9J!nV&a?RzilP13BPoXxP zkF-PB`TeSyASK33CL^A%gGzh|CFq&%AC`Lvx>Y4;j8vI3Xo>SJ=*=zy`tHW3B9X{{ zbj+s<9vqdh8vOyI#J|_z-<$C79R59ye}9R8|Al{-BI8>8yAl6dBCA^#T(=3SPLj%} zDXmODoc30_dnf(eho9&N>F%TS^C|lIQ~G(9etv+T$cy-K{vAJaT0ooKcKVr5KeVa4 zyM}&N(oZjbBHQrOasz%^hv?D6PmH!~(wE z4!WHe+__H6oM_u?-Q~Ep9CWXtOU7MEmkaLV^X}TVlemwxBKN}9DE3`+A99!6;?B*u zU2k)Dw_R|z-LK#8=bIiEr||KMk5|9w#^apUgZOpJ?tENgt*>*hx!1iEt?EE^?+vVO zliNkroO5^6g}z5u`eu~cMBj|IcDr4N>weSaZ?>v$wza<2z2-i5IlkHV5P#P01vN0z z8uqiQG<7xTv+MBL<(a_Gh8#TVNXLcRxp*~uu^8XnaKGF8yxWs;2X?v34>r^z3r^~R z1NCV8)9%ja-F*k$JsEfHxfyD2a+(5~5HwBF!Jg+|;jVSH{e=bNYMOf8uD4n*6gU8` z@2R|K(E#5P1n?Eevykj&_nOy$BmtqLkKEaI&Rt3X{=B<^F84F0<7s~MdFMHIY1_x$ zj$!1U7EZ|#$BeWn*XRfx9whcAt=m4?j;}&ATYPM z%i8XD=YQOdA9g$29&%Tnbk|?&cH@pHPD{)B`RdaL-2qkC6{;?7=wH@rWczdOYP9j9 zuey=fgC{M1jtaGA=FE4Ow?_Zy&im(p6h@zQTKXcp4z^W@@m@_c|FaG;c9~}9bhfX9 z#9w*0dzDc1sM`XHtPRdlXeI8F&%1NlCR?KPjaDYukLto-!0W53X!#fQtFO02+(ln- zyU)2-l-&it@5b8h@zZ>5t&jdUH{!1Pg1g}R$njo(4(-c`erj&SUHy`~^m+HH=T$2d z+t7}Y==)<4cm3V&zH@G0**)@*<~hV#wBsfE<+g~s@TYB?@Rd#e4BD#`eH350_^0ls zb8gEy_wri_7cW2PUh;z5dd`h~$z9s*##+`a@qb^tx1#Ss-OIn=t|_}$A@8-SdNoqo zsTh46BX#8kcijbD0}ZqGT1LNzNtkoDyYS=gWf$BzPpUjI9&7C!jeZk(de78Yb=ejlLJTF1g!XEi>K5aG*WT(HAfe3s8rP@!`@6 zPP7+0`j7bh!MoifQhF{oPCLt^Kf>FK+m`xxI3P7H~$0(+~aOMgp^Tt)jQmaf8ehA6N1}S z2i--VcCWh6z3%(&nhS1Q+k4&hx4M1&aB*}Euzu+wn)Hj`>R$eWyZRIEmM7h-h=$zV z5~Gf)Db#Tx(Z9ebVdp;{-ZmaU9i0;WXS8Zr+qLc$Z5j1`9#4-BfWhGh5f{eCpH${Y zjg5}K2^bqSMLM+T*V=D2Ejj`!`ZG*$#~0j1KLPCod_Ji#L;;u%uZmiPD8^H-qr0LX zLjQZ(4!d(Mxbu44IS1Wc&#NJB=W*0gW6^&FEr3M0@;Nn%sv$bCE&6x!(Gb+K?0I+5 z1$RZpZF$JO^pJb`=iR>N-R_^bU6{MYyWC4A-QElCMk3xBB`scXci<_SaeL`<0Y7tE zd+_C!IjyaS{6MYa?V^7upm@;T^t{_ApxDlns-yg(&w}P$3anXq!M$o1{jR^?-Eh!f zosK4qJ_qDo{BQ0Wd@)j1a^gX56BycJB(|v5xUcsUHy!I3eTJb6he3mmv*4~qO~*_| zzeLpWZh*UbtH4&rW=8ME*e{9BZ^Mz)Z68)S=7F`%ZP8($(T9;^KuDXKI2~;|+r;UJ z*60N^Va-eKrn1`&@%uTq4^y$l3>%R<9Vi>U3t1Q4?Os;)_f?17Mt>I&un7=w!R0Mg~3?$5-_c*ybddleg&^rv`tsWO2Lp0VUGS^zz~$2&EIqvTyU2ha<4{1 zHPKgDbyRfp1Jx8)4Xci?j(!D$*7r6y_Naf*bwGFY1<;C~wgc3UOUiD`{ch_`?$s~3 zt6uM39i4a5-SrbU)};zw#6YEk(4+6h=&Wjc%ynC?TiP<0sF3Qvj%bfQG$-ON{em0& zqAIR*I2|M({T$ldagTek485xSrf%Uh|AN6?gTYw@MhBsR`OWgS54p<@y33(233REB z>Qw>J2hq`$Pr9ow@CUtHZaOqnj&B=Ima-|YR4!)oqux|DJw2F0ay&JbEPCZ)GFvVU zrV@!Q>G6s3>BN+iE96Hz`6r9$`sOO>&t&r>iJ?Ak+?gnpvgPbl+AC$Tw5ph%N*7CM zFI!F*ljTBjm*Abf#rwS@UNJq9 zOQzCZa`IGSe0)6Rlndo#?s&HJW*Nh+sw;z8d_9{;WRXpM&Uz8wTpGhvz1b@lyiB%? z89@wK63a`Pn~JT);q+)WkK&m5a$z#(jHb)eH0h{sBwbEsbK!cs%^UJkg^AONW2s|@ zQs~2AeqypbC==_H$0st`T$<|MiiVfUxqSBo%X*&53+fHQZko4lP-F>Yza`ADW=oKbjcf@%!KPjd^6^( zlrDR@bbhovrspEw=e?F8&I1gk^<3@mSMLd(w%UyWDD{`nG@2*^!@5=QdsNXZoW}bI ztGryYRQ3v)1PwYvPKc_uk0(z7AuElwU=N)urHkdnO_&J5&p4WE;pgD7L)oFYmr%Ha zX-F5R(wL-?^eGtvi@0pd7s_55Z9k3`=rrzS0O2jOeIz?nwwedTN}vL!Yt4@0wv<7L za23S2@ib(zMa%ABRG;RfxrsPg#d&tMW)n*zDGc1av;72$E*%* z&ZnmtE1BwobO9UCbRU|`K%E^Kbrb56~A~8~-2i9y=gaPzBIWa+4FD(Z1O(iFisciW)rn@xd zO&5_NO;Q4SLi|Drfv--JAqBA*5`u)qx1tk}X>>;lMUC+Bt!6f~fU9J#c<)GBcN@&B z*E^OScXFvhUPy6W)(x;lZW@wOAvG}IO_iogsbn6qhnE{;sd1L!2{)k=6N=rvT9u>Q zx<{r%RczU!{i($MJ~hZ;<|}}ID*giz3=K)=(&G^5(wRar?HG|!h*`5VJcwCi4w+!= z2g;v-oa&8_BmwhEOWJ}4oJyr9NKEy>kK&uF9tGAkgf-io?EqEq6EJKex>*>yB~?sA zb((TArF5EAhUTf7Q1T&f5}KA~w~iv{*$jlPbaH$b5j;_)=vEUkx+k)QVL4OCLwpCF zD6avkULwnWCRbl2 zwmFVcchEOd;0_2TpgK$1-As}$zBPE%o6bT~AX$XKY?ginh`SSqi8>zf#wW`(85!2# z)P;#o2rN_@y66zLNRtH~Hf1!3Z?%OFrTmK~PPNSdK1ZQM2w~-X{nelvq`4;!u<%LQ zo5jK85UEZeG$ZNZ$x%TIpH;*GAAn?EOlP23LMfHT&q5d=EFPdy%TI?CMYckJB83bV zgDu$Ji@5Dj1$nE$W;{E1EC5OpHw}3~TG|QkM6Z{Kqt=Xc$t$0pNJEGj+U^bQ6JaNq z=b=6k@U!C+IR;_$^e8Mle$j!3sClSn`I;faqJi-(noNTBctj45X>HHSDU>b@7;F3LHsaGLFN|K*JkS*FoYCLm`S-UCEAj_=83E;jKgllG$91hwHXPCJtSQ#5ZVq1 zB54HF7kec_Gpx`cRwkU(WRWP+X|Hs8e7K;@c4WbXFa})qoD8uU2R2c*g@tGz+aggu zOO=F{$Kx1a*d^XHnNO7!sSSglTazUM@cMI4rdFOgj38;AG)A2a-s?!~0%x#@MUzIY zK%mPesOk_yYfrs!-YUA;udJRapR$rlq!KXn40(`7#Y`RdhBgCHC-ac*M*0GK3I+-# zRg@Wf6f~b9(1V`u?IlCHHwMrtVujI}w9@lxMsG_BbWT(&AFZ#`=037+OcVPNvkv~nZLT9y4E91#Iu93sQKPi`Pc4HPK* zyo8gV%;l7IYoaj0HUuZdcKMLt)c&sn^#wA|4Q8_tD#`=td=fIbm(2{G zEER{!eaM!Dik2-;XDb>8Wf?r-O(nKWC3BN7Ye7gz^s}S^2CDu)4w0FJ5eMJ^QdJ(y z+Ddb+rYV9R@yc0bu+-GB2Kr_}D^8l3;f>_H@%l&<(@Yw)B|Qp%h02r6mj{Or5BDY# zzE4_sroBpWW~$ALsUhSOUwa!c zhL`X=6FfN8hE=C*O|ZYpPX-eJ+&F~{h)1EA9K}H3E?I_e*4W4(%Z6T5>g|!yDUfxH)OO~ZH%n=dfR zu%m>O3bsmP75sq>r3yKvAKRJ%LQ86AmPL28Bv8a7+BwOBLE~}(t85kFicERLDFN<~ zp0{h@V`m_-0*_ql3KWBtHf8M;m_=(ydH{PJO?#PfG%b@$DykAfF*WgC7`4(w-kC(L zh!0}JKWpHGqkf9?%5f&L^O|s(mq*wk;~YyJWyKgn+)r#{@OUQ`*PQ7Vsi@lm$w(ZUB5|#P zG7Zb1Hx2S+7gy4gA{NSk+2j;%$rKCuaw9C1jZb9g2xg&}t!;49PA7{agCqeSJ>eY> z#7a(k&2v8=%_>Tz_Mx_6cyie zql!nhB23&7PP)^P1U0WFy*ikX)Hm6uH@J(B9fQq5@4dGQpfT% zNo%YT+Dy_#FuP+VPJDth;S|XvY9zxAo|2g%4o;^K8apo9d$VY%YSBU!69GU?1EJOd z0iDzj^f*xKLa6d~(Z=AsgRTHkeF~~J$1aIU#V=Ngf=|9e%0F(&Ms;ZOM@lnBq%`Bn0 zGQnXDEc`0X0>%(90mvvpbJ?iktpW_GiY8D|g+q`(j>N|l3H(#j69~UAXP_1;p~eIP zk&IZRr3al5rI-wkCyQ^UP`LmQN%m&4@otUVEwLuY~8JzaC zY1KsRlKYGGGc05X3Nx`FN*fDahH08Zy@@=)3sQum&jd|WFYizz(kwxRjaSt#+@aa> z99u*|#wuVzF_{LDkpk1}lVF&+0!VP+v}2MDL#&u~d}xkd)mZpKI@fi4VDsiNtvD0U zG1g~UT>(-_f^M}^yo-Ep8#~F0FJ9KBXNTOGe%<(0qAp+!3_taya`NAZEy)iZK@$@s zd1WDak*R?rqnWFEpj{X|mQRmm6Hs9Y#lU|7j9ACRw=Dd^6$ot3WEXwqRVCQcXZr&LXVcHU^>16)wNEA3Z9=CN{(?%J43A zD(MTJG(H}-PO?mH1V-+ExNZbQk7^AR{J+^z3FA&e(A0JoH);ilnsqg^SwWR3q|Cm} zx1MdmI%=DRH7Mb|+PtJBV`bYUMT5yyvjbGo7BwsKIqxj-39N3&8z~qUGQzf$4o|}B zj4UsZf|5cUPdGxNL?vZL<|=04X#u2DxuleU7Q}Xp z@?2%A5^WnQAG3B@^5^?{jhIv6)w2oCVC`OO@8ER4*9ma~J?1O~thE4=)Mn{Mvh zzhOgsTW37p)7R76**#vK%%`s%O`}vcg~wzuHFoW(?OVII_IGxVc6P(>b~>MeUo#Iy zy?ZiG1h<==Lu~HA8<`LbtF+-jTWK0} z2PncvVWgqhz;;9RDm=bHrMnITX#|u*if6{o4bLwreIb{shTv7oAHqDF+`f$TB#TgI zL692>v{qCDnKyfbhzvO@>)ucUVnwtY2l2?+#1zXrCd9{xFltS&`ed{0$0+b>_40_i zgd9K}QmAMb>3TE>foeW_&0K(#HT6yMp@VL!P)%jw;Nq5L&sY*cYQg;YBO#=v1Tm{noH1FF!?4zJF%v2Ja^w^x*`jM~o|M1=i$Ab|LA$1D*MZrr$g*e~fsr{f@URXu zt|L)YU`VyUj2JIsYDw224@?z}m!xG6kR(Z=NFa<5^akrU`@G{Pv?Ze{R}=$RNU zLY}?h@X>vH4}HFs~M~cZF0^7{Dk9x#(Z*I(M6vM4C?-h8I>t+l*W*j z9qA=U2-c`LXqsguN~ngTRKTt&z_%CBXyF0_{LrXhJo0v9jc);)`}qw zY#&^59IMMXa}2A(hjfj0YX#tyjK+1yp9K~Sd;{OEjH*=Sx7Nz z7C5lXFNHvcskBI&GY}Nk%rH8^u{N;kQv-b?5QG#VO?MP+QElYJup_otGj3~4z!Hq7 zjNPleC=Nw1QP|2##ogO$F2XNu)(Wm>%(IL^fMrgbDijTFl1}NU7Bv0 zx^2b0dA0o4g`L~=PEHLH4_fO3@G&93EZsE__6w;uGeLw~@!$}&r(*32Gd4yP5?KiR z7VZLa3X>+Njc*nDy%~m@#3|Wn%wjTn)i!KfwDA|om$X9&M_g5wiiD%Er2Q*Dq7uXb zy8}ulLD*v8#vEovWC)xyu8v@`JoBEBK_r^SfgKY~;G89GLq0O$KD@)1>}j%NhhJgi zXyV)jv3XPGQe6wDi*E1QxnlJd@Hk14PIAv5}J)XOFR?}1?x3o=7m;F zC$!VFS&n6B6iKbDbm=jeMK{(u=aoZT7BU5s2X{rXDE_Hb%Q<2c;Iu zLPU)>eLM5g;(v#sR_G!iCXFr8p!31} z3j~4=jBUH6J`OShC(4%0`!@e#Q z%OS#@Zzo!A1#hn53nK~^Xo*H*sH$T1lz0e;wY0jvTp5lf@(j@jLZG6p2177VKBifq zJelCkV--<>ivQBe0eVs~*)>bkj5?-8X82fm z5d{adh7prkw9)K$y$)_^kPF1MB~gX5X-i_Wz0#r@ji?XFELw+Mc-Uo3o+z8guyD}H z0)XDnwZ0HhZ%@7&{Y*3rsA$SMq{#P7ZN!4uD$@@(z0_mdIfCVvYM;OQeYEH~YY`P{ zj&%dHysUbZUO|S-o8Z|tXc`1sKU&r8I^KiY-3!>wX?8CF_FyDwb9^Q7DimrKT(;{C zUcdsdAG++c-jvp-w~MH^N2KwHbFCHz8$07!cE(beI&oGw8kJ96ZTVg@GrwU2lMS;U zDn0QM_ezdy)kw_d%3$(u76|R45Mj2Ms`+W22>Leh(K5W%SMAv3K_(O2Uh+SaamT+} zoLb+6{O|LyFlVi2$kLYo8qr)60ya~MY>|R+Rvj8Y>&XYz1Y=f14V{31kHO%G#oO9` zo1?|r+0qDYl^;sn5Vv!4jVGk6Zv87s?vzccd2rHROSMZ5W_1?r1JlUX1x+HmyJ-w( zqK*s^IGzBu9{3~ykEZCgmD`X}^A%`omLN5{ZpLhL2q=OL0(+8}02`!GB&H~{IRr)y zk*>f_0*)mMA$L`owp2V1zRF-)e~eSUWm6Q3o84J-rN;3c;CYHyi>R_g?vw54t4=sM=7wXqjvRdLXfjfC5;(M!g`u` zQHMS(heS}U$tMESBwE;wCRAgy1aAaa;9bKQaD0)p&7!eky|Nn+5hz}0qfH;+|A_7@ zj!N4tshi{7)b2AJ0vJ}Y_R%kz_)v&g3$lI*EeK;|V=fAQ3sNRUdI%|{sWW-h)e0LprMjwKhtXEweQ2l-%4v zC;4`txfIS#KDaB$2{W@?5N_VJaMS2)2SsROc`MI^1>Ox;tsE<~zigFSP)GcLx>2o` z8j-Qlx$&VbG^u>02KHA@hDo8>UrHE3W17Zk+x$3fH>#wt4Uo*F-IWFXIw$Js)hYCZq_bm4@(3a08j7%zrBeeoy!x&eB0H=>P zzLwq7D$!D5$z#KCs1!Gn^5Lt^j>865`M5eKPgc%Rzb#-F{a#$UYEow08A)m1f%IT& z%`tw03cmGeJI;TKz#sbA9<$7-9JFzS*z>y7$Ioy18MY6HgR1x4lPL2LoS^<;4Xp-U68S(Pec z9X}%5UsP{J<4_nXoanj9afEH@HJ~B{A^Zb{a)I#(0b!KtKnxt_Af#XxLlFB!;Dd$_ zi`2VtuvU9^BY#{xjDRiG7~Y?T*UG~;Dz*j3+m8*qcsZ&xxL&|(WmHiiT1@*wjTQ@& z6EJG4q83=ghEX|Wq-wb~2dGxoq&ADIhF39$!i8KBMVhTDzL}h>#+VJZ*}OIK)o{Cj z64FkX*c3k`Ol(ztcx>V(6*MXch=rO+l~=^EW7~Kg7ummkYo&Tx*G0t>yw*m6b%5fG7|? zrQqu$VyZXcR#Kh{H^bUUhJxj;{<}MFb46g(~igMcmCgQ&2SC-Tvi75a{v4AqaX;xn|KE zBX<*`+c4t3lUzxIsj*h0=0@!1*kSBtI7(!9ZXa83RMe?h#m2#lCa~mvcFGxRy+v6=$iP6IEjAHI%mrLKd`hl(vY55Q9jPWcv(B{Ducon*s%iT60Q} zaaGrY7#$FG-m>4xl+zFz^_!WUv%HaCwQrWk$bw6=OFRQs%}YMg){mA!WJUI!AibL= zl6_rjLYjrLI+hzikuty-Wf5RyQ8zYjy&CEu!V2~W zZGz@iVZLTr=J1a|fDDps11)@t1(NWjx7BE#kZ1%}_5*b;omy5gnSXP>FrD|9$h;~8 zuIRg#Ni1NuY~{^@E=0^ak|h%|vi~S4G?<3Ij59!tbj)nnC|+vqpCuTFpl)zK`K@wF zT<}d#t$tpSr0d$V1d(OCYhd$8so;$vP)3~)-8@)TOGKDxOh%x;`ay$p`&&F|x*^*lCqAIGEZPg|;0Ty}QngByty=Ko?@S9*?RSUA4DEG1y%*sAB zv$=FaI@)zh@G>~ zzbQLqrFNDYo|JlSdS8&tf8CyvAneeEtzf4P~-LY?MOFEV0Ux z%S(zhHh}1)U3MV6qVMJ8X!TRLPWysC$a4wpgHEFKGC0V>!3oH9&bU@5Aaj%`aZw}Z ziP|7%(^aZvdpiA_kRa0S%=|IYSL*wN#_P6d-ZK{Q!Tl-cql5R*crvk%UYG>+~Oz z+1bkOOuUygmTtgFBvuy)GhU{cOkq#d(JU6dl5em9r*;U+XNAi!8jshy-~9r3qa!Yi z6y2I)?=VhlNF%tPk&w0r#{tmrw*zy~TMbh+Q^vOY7IwO0IS=}Kp z4%A$0O(_6CVjck=86Ri@QY`BMZ9r+eBolo40^n@qdPK!5R#7WEV!(+k5kDn%?o4I$ z9xVdUGXhM##ed|VE2S%r*9~&S88&B_u|D{&&q~ZsM&Ssy!=S}#)O_Cv1Ry8x!$;Ot ziEqU|Rq8}~t^l#W#&Mxfe5UO=%t2u@9uo#6RR@NXzcJ5Vi69NhD2{bdnSvoLDN2zB zW$n-#G0^$m*n}ICg3s}3#f0$m!C<+llFB-t;?dQcAj=-e)+h$SQAq8FkNYCnow1?h zsx+!ITg;nK{|vGz{f3U@%jT^k`Q(@>@*46wzunGo34su_FK7@a(H@OWV}jhZoZZ{n-wk#$d8&IfKZzRk2dXQm z$w=SWM7V5ysV1XpXZ<#*b?^SJHSp!?Eb<9vt#lp{SS%)gv_K)pJ!AZ+e5-gM2L&!w z=0Q9&tcVPaN6B7JrMR>)72y?CuEVC~aWY?Vla3$_w1>H_vuk)Vn=5x`^Rz;F1X=`M zDtyC@@7zazA^`z6D2gpoSX{tUO0Ax)lJzKg!v?e|lO4sq+D}AZ#05+y7BQtn?Vnwgev@tOas<$g+>&)F=x!VxS$z4b6jNDxn zdsOaL#=a|b9x%-XSEo)SX&e$2bTN(Qux$B92 zMef>T&&b`DSnCz4L`Upmxw|H|+oTB2AIt5D*nulmk%8D*xw|^{2XgnGXl%zi z^}0Qlkh`8(N$%Fg9+bO**f-=3MMl=EBG<(}EO#BTPs!c2u^-FbWwDN{RlcVqvFGG= zZR|hf?z-5HYt-w_v2nTUi#;rN9kEZ!T|D+(xmyr>QSPpdZQP*B?u+H+Zc*$mxmy!^ zRPL^ceO>PQV*e#~`(k@Gs9;CV z{oe>)&2j$qS9XrMNQmIg9Z~hBQ!*^UH7Nh(NN;f#I8QB-jB@Fe^dDR4n4czB^&nb06nl>O5iP|0vRf+W#5OztUM` zefKMzzQ}3o#SP!9>p$@QB4@6Zjz;4DMb11c{Ypu1x6%(Fo!Wm;&|N<7lqLPVq%T#U zb?S}(eO&(%=UY1^qwf;b-`_!g$64$=ChgJLmoA|8T;w%UIj(29;~cB5|3^q)gK;oqPhPKRQRxO9B|RbO1~nwTBGWMgaHXD32xFA4=W zcbnw5@%Oip9@L&?0G-7x3!VNRsX#7&C-oRy)_BI!FN-G=`Y zNDpeyy^`NBd#UHMb@Kmj$#0M6THp)8$^F9bgs(d-^Mb#7eVz1^NT+@o!A#mytdsxV zI_Zx|Jw`Z@dcG^^Hk|(m=>%6c{rQFDx8d{BcGXTJwn+VlCEbWKJC8Jz6GCWkL(bFW-sr^Qnl`QX)bR%j?`qw1g7VLg5=|<3$ z{Cyp&ejBeRBz;|{%Bbn;+a-OTmHsiLQ@?C@_zcp6=IbBpq_;z^AiQ{{TYdM9>f)?K zI*o%7;AMU%CEch-lK(A|ZiHS*e^Anmk|F6|MS4&>zg;K&Kcya{9Y{Uv7OHj{?LyM` zAw8)6lak-40+Ro|l5UUx$C2JCdHk2B>(u{UsmCZ2QfNNWRg7nEk4li?bS^_Wjk8f8 zB>y4K@BgB@e^BxpMMtuHRnl#F=3na6(~iNR?;3SQ>KQT| zLTa!X-AGSwa1P#x2yWJ5^0WuDVevGA3UC&NH!?Xsjs<$;`_oS_x+4nBpS9YkNVe(2 z+hMad=Z*(C5DssKtBvD$QCB9FtmM8$SSGzHcde<~=YFta z#n%wz#EooRK_PJdexXy<-jtdn zCD}P+O^5{2nH}KaV8X1$ad0F@8J_Zva0gUE$!++yO)yb*qbb+$wiJ@ z;mJ`)JeeRry9c!p6SxC^n4|IhQ#PIrbVXv-hZnTTwQ_*Rw~$vGggBo{YfmJ$KOWjQ zBSKeT!5S`q)L0Fkgj>i!s~%P07OdJt`qBzOygr<%s6H$+D`Pj*rJ3*po4UVwo;t5{{SZJ!W&4}w12q|;)##wu+&2iJQeIzMSptw z1_JAvVVS?eHnn$eEw0sp(*PJz3}YzFSyukhM)R>Rg_TlEQ*{_T@29i}d~xr-K`-93 zxkvTizuk*nmk)|-*j^Riw6-@kBu1g-i6i^9gjIj8wah`@_h4+Rw`B;|*${i@X4Wuw zfADopHv^V3qlJx}>){_vg%}{U2&pamUl0h^VtZv7B`+jwcp8LL`b8I#FZ^2_c=16T zKMg1uFuM;Ao-7rI%6-U&T{PgWpU#%jdUFIi8W_^RRAS3i5}^o*V~__#G@u|b{@BQNj_W}{b#5&OqkPk{dvZeIY39|Rht*Ce&^nVOiu znI_1ZOMl)5zod6&@_nVjk{AWUQ)*a>W>xj@O}+PqOC>WA3Q81#1t24?Th)sc zJ5xR4!iK8Xa@Z3C5e9Dc6n6NWWQ8i2CI_9E%*gByzzQA|3R0BQ6U;U~++|;!H?7`3 z;h8OqEbcYai43y+r0TeqyaG6~kM0JeJZPS8J+xU|Rx@k<1t+}J+dt-9b@N~{&igSE znp!{ZP8J_)(7}*Myu`AOMmq zt^ZK-Q%qCvMH#y$k^KJh&$32u0Hmn9dh|Te#Uz@YipS%9pvo`@sko*3anGa(`R82(*IG{O zJ7ufp=t+ykI8IOL^msWrj4NXO`8uZW5LT2fPB=YS4U_Ic_*@TdZI&)#kE}`(g@BE8 zXGbInVp=yD208m!5+^73jGWHn6Y7dXiTDleluw6a`X4;J1NJ1TfZR=Bqx&ARSUEko z?HMiL28U4KmvOGASYV4pPkKyDf@347L_eYSR7y^HhP9GVpDR<=LRE*p$2XJX*%XQt z%JeNX7t5)f9xxK82lh&eVnkYcc#@WXB=e&%ZptGcFsxq<48%CU8Nq)uePu2ge!0Zm#QhhUCQfgr_Lx> zxHYT(w&KZO{-l)G*DI@XQ!GpM-=I}q$M5KCXLa_P@~^}DpZ)4r1>OIL<@@@&UdqFb z&3|_LlSqZj&h-CjDX*{pBo$L1Y3y|QOL0$sS^T3S`uk7FhxGM!tHbvA-;T1s^0j{r zH3onBx?4Ruy8Ze)`g#`c|I1hYHYu;KPe^%cKebc0Uy_}7;f9*1>stsvBK_&>c4@Hw zzAmr({{iHs^82U|{%(YS&wu@euRNk?%=dNqN03HYbp3GNsXw_clSh5AhSNEZ7yj~{ zQchoQlke;DR`t$Dt@3xlFGPR(s{5-_EA7|mPvC|B``VALua8&=sK2l4`>a)7#~0`; z-1b#}cK<&w<@NmO_!fPAtg3XS{W|$8R(Ty?rLP-J#j1q;{cl+1pXpQi^mU=t0X=Ri zm*afPD*wHm>W#i$rZdXbnoj3Mq?1of(ALDyJ#nonV2`){zP|nv+2BGo<#oK?Q&L{% zQ?*sbPp7w{K?J+{`#Rq2X(_J}i|~*BbUEFw$B{;TGUbm_F2{NLI(6NyF6LL4*VhFo z>@V*eldOBx^(lGO7hO(YFSW|+IDx13s1h1a?ehBha+IgKbo+JO!#DS+98|ymZ;$^0 z_gBdGd#!X`Ucw2@TV0*LZj|ySgWUXlkGlD>X_$J}U#v7zCXKsQp(%ox9Fc#p?7@HR~WatyuRk@l>fcE zRE~eBGk&`K9a6sfD~|J)dsL3HML%>oou8hqEd1&hzo~NGCH!P9Qi+rrxaC}qL*&J3 iBELEHK2`p&;NSND+21E}A5{LxAE=z~v +#include +#include +#include +#include +#include + +using namespace std; + +int main(void) +{ + int lineSize = 100; //100 for input + string rawInput; + string tempString; + vector heightMap; + int index = 0; + vector lowPointIndexes; + int totalRisk = 0; + ifstream readFile ("data/input.txt", ios::in); + + // Pull file into RAM + while(getline(readFile, rawInput)) + { + for (int i = 0; i < rawInput.size(); i++) + { + heightMap.push_back((rawInput[i] - 48)); + } + } + + // Iterate through map + for (index = 0; index < heightMap.size(); index++) + { + if (index == 0) + { + if ( + heightMap.at(index) < heightMap.at(index + 1) && + heightMap.at(index) < heightMap.at(index + lineSize) + ) + { + lowPointIndexes.push_back(index); + } + } + else if (index < lineSize) + { + if ( + heightMap.at(index) < heightMap.at(index + 1) && + heightMap.at(index) < heightMap.at(index - 1) && + heightMap.at(index) < heightMap.at(index + lineSize) + ) + { + lowPointIndexes.push_back(index); + } + } + else if ((index % lineSize) == (lineSize - 1)) + { + if ( + heightMap.at(index) < heightMap.at(index - 1) && + heightMap.at(index) < heightMap.at(index - lineSize) && + heightMap.at(index) < heightMap.at(index + lineSize) + ) + { + lowPointIndexes.push_back(index); + } + } + else if (index == (lineSize - 1)) + { + if ( + heightMap.at(index) < heightMap.at(index - 1) && + heightMap.at(index) < heightMap.at(index + lineSize) + ) + { + lowPointIndexes.push_back(index); + } + } + else if ((index % lineSize) == 0) + { + if ( + heightMap.at(index) < heightMap.at(index + 1) && + heightMap.at(index) < heightMap.at(index - lineSize) && + heightMap.at(index) < heightMap.at(index + lineSize) + ) + { + lowPointIndexes.push_back(index); + } + } + else if (index == (heightMap.size() - lineSize - 1)) + { + if ( + heightMap.at(index) < heightMap.at(index + 1) && + heightMap.at(index) < heightMap.at(index - lineSize) + ) + { + lowPointIndexes.push_back(index); + } + } + else if ((index / lineSize) == ((heightMap.size() - 1) / lineSize)) + { + if ( + heightMap.at(index) < heightMap.at(index + 1) && + heightMap.at(index) < heightMap.at(index - 1) && + heightMap.at(index) < heightMap.at(index - lineSize) + ) + { + lowPointIndexes.push_back(index); + } + } + else if (index == (heightMap.size() - 1)) + { + if ( + heightMap.at(index) < heightMap.at(index - 1) && + heightMap.at(index) < heightMap.at(index - lineSize) + ) + { + lowPointIndexes.push_back(index); + } + } + else + { + if ( + heightMap.at(index) < heightMap.at(index + 1) && + heightMap.at(index) < heightMap.at(index - 1) && + heightMap.at(index) < heightMap.at(index - lineSize) && + heightMap.at(index) < heightMap.at(index + lineSize) + ) + { + lowPointIndexes.push_back(index); + } + } + } + + cout << endl << "Low Indexes: "; + for (int i = 0; i < lowPointIndexes.size(); i++) + { + cout << lowPointIndexes.at(i) << "\t"; + } + cout << endl; + // All low points are now saved in lowPointIndexes as indicies + // -------- + // Calculate Risk + + int counter = 0; + for (index = 0; index < heightMap.size(); index++) + { + for (counter = 0; counter < lowPointIndexes.size(); counter++) + { + if (index == lowPointIndexes.at(counter)) + { + totalRisk += 1 + heightMap[index]; + cout << heightMap[index] << ", "; + } + } + } + cout << "Total Risk: " << totalRisk; + return 0; +} diff --git a/day9/day9Part2.cpp b/day9/day9Part2.cpp new file mode 100644 index 0000000..1cc2ad8 --- /dev/null +++ b/day9/day9Part2.cpp @@ -0,0 +1,145 @@ +#include +#include +#include +#include +#include +#include + +using namespace std; + +int main(void) +{ + int lineSize = 100; //100 for input + string rawInput; + string tempString; + vector heightMap; + vector basinBarrier; + int index = 0; + vector lowPointIndexes; + int totalRisk = 0; + ifstream readFile ("data/input.txt", ios::in); + + // Pull file into RAM + while(getline(readFile, rawInput)) + { + for (int i = 0; i < rawInput.size(); i++) + { + heightMap.push_back((rawInput[i] - 48)); + } + } + + // Iterate through map + for (index = 0; index < heightMap.size(); index++) + { + if (index == 0) + { + if ( + heightMap.at(index) < heightMap.at(index + 1) && + heightMap.at(index) < heightMap.at(index + lineSize) + ) + { + lowPointIndexes.push_back(index); + } + } + else if (index < lineSize) + { + if ( + heightMap.at(index) < heightMap.at(index + 1) && + heightMap.at(index) < heightMap.at(index - 1) && + heightMap.at(index) < heightMap.at(index + lineSize) + ) + { + lowPointIndexes.push_back(index); + } + } + else if ((index % lineSize) == (lineSize - 1)) + { + if ( + heightMap.at(index) < heightMap.at(index - 1) && + heightMap.at(index) < heightMap.at(index - lineSize) && + heightMap.at(index) < heightMap.at(index + lineSize) + ) + { + lowPointIndexes.push_back(index); + } + } + else if (index == (lineSize - 1)) + { + if ( + heightMap.at(index) < heightMap.at(index - 1) && + heightMap.at(index) < heightMap.at(index + lineSize) + ) + { + lowPointIndexes.push_back(index); + } + } + else if ((index % lineSize) == 0) + { + if ( + heightMap.at(index) < heightMap.at(index + 1) && + heightMap.at(index) < heightMap.at(index - lineSize) && + heightMap.at(index) < heightMap.at(index + lineSize) + ) + { + lowPointIndexes.push_back(index); + } + } + else if (index == (heightMap.size() - lineSize - 1)) + { + if ( + heightMap.at(index) < heightMap.at(index + 1) && + heightMap.at(index) < heightMap.at(index - lineSize) + ) + { + lowPointIndexes.push_back(index); + } + } + else if ((index / lineSize) == ((heightMap.size() - 1) / lineSize)) + { + if ( + heightMap.at(index) < heightMap.at(index + 1) && + heightMap.at(index) < heightMap.at(index - 1) && + heightMap.at(index) < heightMap.at(index - lineSize) + ) + { + lowPointIndexes.push_back(index); + } + } + else if (index == (heightMap.size() - 1)) + { + if ( + heightMap.at(index) < heightMap.at(index - 1) && + heightMap.at(index) < heightMap.at(index - lineSize) + ) + { + lowPointIndexes.push_back(index); + } + } + else + { + if ( + heightMap.at(index) < heightMap.at(index + 1) && + heightMap.at(index) < heightMap.at(index - 1) && + heightMap.at(index) < heightMap.at(index - lineSize) && + heightMap.at(index) < heightMap.at(index + lineSize) + ) + { + lowPointIndexes.push_back(index); + } + } + } + + // All low points are now saved in lowPointIndexes as indicies + // -------- + + basinBarrier.reserve(heightMap.size()); + for (index = 0; index < heightMap.size();index++) + { + if (heightMap.at(index) == 9) + { + basinBarrier.at(index) = true; + } + } + + return 0; +} diff --git a/day9/part2Instructions.txt b/day9/part2Instructions.txt new file mode 100644 index 0000000..c838dab --- /dev/null +++ b/day9/part2Instructions.txt @@ -0,0 +1,44 @@ +--- Part Two --- + +Next, you need to find the largest basins so you know what areas are most important to avoid. + +A basin is all locations that eventually flow downward to a single low point. Therefore, every low point has a basin, although some basins are very small. Locations of height 9 do not count as being in any basin, and all other locations will always be part of exactly one basin. + +The size of a basin is the number of locations within the basin, including the low point. The example above has four basins. + +The top-left basin, size 3: + +2199943210 +3987894921 +9856789892 +8767896789 +9899965678 + +The top-right basin, size 9: + +2199943210 +3987894921 +9856789892 +8767896789 +9899965678 + +The middle basin, size 14: + +2199943210 +3987894921 +9856789892 +8767896789 +9899965678 + +The bottom-right basin, size 9: + +2199943210 +3987894921 +9856789892 +8767896789 +9899965678 + +Find the three largest basins and multiply their sizes together. In the above example, this is 9 * 14 * 9 = 1134. + +What do you get if you multiply together the sizes of the three largest basins? +