+1188
inputs/day5.txt
+1188
inputs/day5.txt
···
1
+
74889598306375-79559523144736
2
+
23847884851515-26063777298581
3
+
459936449883679-460281935061196
4
+
545695811978609-550366304549745
5
+
269527990632522-269945028746335
6
+
52542145987470-52542145987470
7
+
273110633492620-277105721993791
8
+
99226245783045-99371738264141
9
+
374951583052617-374951583052617
10
+
262023579067176-262675254937082
11
+
305591362690390-308549833234186
12
+
82652823861018-82652823861018
13
+
251950657574956-259887392284062
14
+
426017258068316-427958298472665
15
+
523534648927338-529180981385641
16
+
264959008015820-265735367299044
17
+
222376773933674-227770708606301
18
+
400512092626953-401890632610026
19
+
352311770735207-359414238172700
20
+
333688717400456-340405613250299
21
+
437019240719486-439402833548026
22
+
527092562011228-532043253244526
23
+
342398377522670-351448558631916
24
+
459284442765997-459767549156618
25
+
555666591387764-559196995081551
26
+
445635129234863-449206434197795
27
+
104742632902288-108456151380882
28
+
486936683064659-489793719367934
29
+
483401294663066-486936683064657
30
+
111131504257196-119314223294276
31
+
192217707764058-194249462841255
32
+
152542412311937-152542412311937
33
+
410195735957768-410961237535462
34
+
510864614478233-510864614478233
35
+
1725086974408-4674947171141
36
+
407943251943297-408791248752573
37
+
514768728274514-518320134249968
38
+
352311770735207-356182489432407
39
+
284156674778218-286083629847963
40
+
395362879313767-396732118247651
41
+
199280146173698-200618657181350
42
+
46260352873068-47885164713225
43
+
194514670399242-196188590161744
44
+
31845543953525-39662866201277
45
+
420816803348804-420816803348804
46
+
243459050537558-243459050537558
47
+
82652823861018-89744399134578
48
+
52542145987471-56718886376170
49
+
143074066748262-150192256362507
50
+
455946037419527-456538631967209
51
+
48362683356905-49772221084664
52
+
193309947601086-195025888420591
53
+
464377344898138-467090913854896
54
+
404992714738795-405533934296894
55
+
391336934620721-391336934620721
56
+
42870359530997-44424663926534
57
+
69239353265214-69239353265214
58
+
323286609420012-327570020897503
59
+
457368110531325-457749348540685
60
+
366177675277860-370540231905174
61
+
262675254937082-263504034398902
62
+
61596205240302-69239353265214
63
+
295720296715724-300542046913690
64
+
457368110531325-457571749135632
65
+
98704650973413-99371738264141
66
+
405533934296894-405762624506803
67
+
167134472908052-167985611468492
68
+
346606822382773-351448558631916
69
+
382529058990430-391336934620721
70
+
399437817124168-400959205952113
71
+
456538631967209-456928005074042
72
+
478828408554373-480355349773345
73
+
263242024963092-263937259638725
74
+
492809360807210-494748592737162
75
+
553971031209233-562668469713404
76
+
96611015315272-97445956091146
77
+
496710379259649-498551037908974
78
+
545695811978609-545695811978609
79
+
313811091610224-320919547902610
80
+
173868070074554-176589728790805
81
+
494045046230461-496039303951751
82
+
500203266743658-502208036779916
83
+
124139424755624-129841188406766
84
+
452932791437922-453307337989294
85
+
119314223294277-119314223294277
86
+
262023579067176-262189648814675
87
+
407943251943297-408507566260104
88
+
40499454165843-42353951060015
89
+
409063418440061-409812352602173
90
+
99952814763659-100056213702826
91
+
97867489804299-98190930500181
92
+
267798658217408-268465485882652
93
+
98903776347733-99226245783045
94
+
392265619122335-393938447521681
95
+
31845543953525-35368129711400
96
+
498956072992090-500877971484824
97
+
261456991003298-261799419139686
98
+
150192256362507-150192256362507
99
+
541992002580805-541992002580805
100
+
98903776347733-99371738264141
101
+
408507566260104-409245214597176
102
+
265315310082828-265488184749660
103
+
262023579067176-262567907546600
104
+
393302087448366-394887747369031
105
+
460281935061196-460769747344763
106
+
374951583052617-379631331873305
107
+
13449776908338-17647218540771
108
+
95951220808570-96384239222742
109
+
198192283542096-199682437936682
110
+
269126435468584-269280617538565
111
+
131683853648211-140073228721597
112
+
435205877780561-437019240719485
113
+
173868070074554-178593201312903
114
+
266233250142694-266988040203737
115
+
402974843625693-403261146828303
116
+
44749609982898-46467592204076
117
+
136309772739012-140073228721597
118
+
152542412311938-158129794518855
119
+
464377344898138-471098541087893
120
+
454493733599256-454945412013225
121
+
406975766736538-407453438188871
122
+
217373831665498-218764099619920
123
+
410075582063499-410576372509974
124
+
305591362690390-308549833234186
125
+
460769747344763-460979652114697
126
+
456928005074042-457368110531325
127
+
495490712582377-497184240370882
128
+
203353257515922-206995711218753
129
+
452662947889223-453307337989294
130
+
409245214597176-410075582063499
131
+
21281719145212-29461042500436
132
+
473824309898264-480355349773345
133
+
459630581183475-459936449883679
134
+
410961237535462-411281888012925
135
+
235064187073078-239746783395880
136
+
46970106550375-48679186185299
137
+
504627639656299-510864614478233
138
+
206995711218754-210401847604210
139
+
453512846391372-453952362230473
140
+
254876062984423-257097125130819
141
+
396379947271805-397846727638156
142
+
122506952022586-126258255019363
143
+
286083629847964-290200989953183
144
+
514768728274513-514768728274513
145
+
397364121060177-398907008750174
146
+
191186839436490-192786667703686
147
+
213618967821287-217373831665496
148
+
404839885331583-405533934296894
149
+
410576372509974-410692115085683
150
+
93620627683853-93871840848933
151
+
97445956091146-98190930500181
152
+
195774648677933-197516289194107
153
+
197055281231222-198362088431227
154
+
182720818560544-187301677330220
155
+
4674947171142-8700720898079
156
+
533834274871010-541992002580804
157
+
313811091610223-313811091610223
158
+
410961237535462-411827536271406
159
+
456720730464466-457368110531325
160
+
239746783395881-239746783395881
161
+
497774899702742-500012881001943
162
+
275245086049008-281166045317238
163
+
264959008015820-265735367299044
164
+
73050487240215-74889598306373
165
+
243459050537558-248654988639021
166
+
426017258068316-427958298472665
167
+
394481105634933-395874104406883
168
+
93150966904813-93620627683853
169
+
455313396927797-455850586073077
170
+
162707238999678-167985611468492
171
+
13449776908338-17647218540771
172
+
182720818560544-187301677330220
173
+
398429972215735-399914592704971
174
+
407680028035540-408507566260104
175
+
335524852113386-337312412933214
176
+
264959008015820-265488184749660
177
+
95951220808570-96384239222742
178
+
261799419139686-262567907546600
179
+
92132565696665-92283993119003
180
+
327570020897505-331097913750044
181
+
415055259717418-420816803348803
182
+
41463756158179-43315740257493
183
+
456720730464466-457571749135632
184
+
455850586073077-456181678272920
185
+
43619628533047-45384139349382
186
+
362380049910825-367267049622454
187
+
458502597573756-459117229622451
188
+
189
+
267703200553763
190
+
314245513301228
191
+
476669940887631
192
+
68686981025899
193
+
288791850269680
194
+
281914876554026
195
+
486761581187065
196
+
333997925976156
197
+
537586117345062
198
+
112907923188286
199
+
166812428559392
200
+
284004949332581
201
+
562115670229032
202
+
549026638282552
203
+
437576476020553
204
+
14566907141898
205
+
46708181890450
206
+
62313440981967
207
+
127778677675833
208
+
330504750042287
209
+
510633366982448
210
+
541159770543027
211
+
132463454639608
212
+
408048385933909
213
+
19534901703219
214
+
167114919798553
215
+
278527915757402
216
+
102815478610376
217
+
150266176348267
218
+
530354406858497
219
+
453042756287736
220
+
48887154128461
221
+
365344811369461
222
+
12126751275995
223
+
123993004151835
224
+
344629680425481
225
+
550899643954680
226
+
146340981547307
227
+
454786973542684
228
+
501010736140301
229
+
289056969634721
230
+
397587872146276
231
+
2174113488242
232
+
208667122296511
233
+
182888350269357
234
+
470017389043963
235
+
174518916295537
236
+
214552545899840
237
+
262782697922098
238
+
134788867765933
239
+
367085974260636
240
+
554409438853802
241
+
420948933837777
242
+
455522571390322
243
+
124831505380245
244
+
155740997113385
245
+
274010224305989
246
+
83370536371642
247
+
543572315919977
248
+
329052723048827
249
+
518139367819196
250
+
462416272445712
251
+
332345131870882
252
+
393186021434820
253
+
419671803355776
254
+
115382824273406
255
+
470282020510768
256
+
185141420454036
257
+
42734359180863
258
+
167282907500231
259
+
73353898280494
260
+
6648095822369
261
+
32048561201262
262
+
288434047549766
263
+
480181909326150
264
+
146913110778668
265
+
515426427788552
266
+
284388591874454
267
+
447956707600792
268
+
89252787353972
269
+
96558814797775
270
+
62878896205573
271
+
326202594058535
272
+
426098559981298
273
+
219695052754663
274
+
390765585983920
275
+
549378613500346
276
+
70263847891740
277
+
517008251309114
278
+
328392291885067
279
+
562518908022957
280
+
420587076835439
281
+
275191197082879
282
+
325767490265087
283
+
392508621207176
284
+
85541093459
285
+
501070386333897
286
+
161353190070398
287
+
448958147870071
288
+
185720958343758
289
+
559038391297690
290
+
328146398661322
291
+
126854650446469
292
+
153427740939119
293
+
386359655344879
294
+
349262115858680
295
+
87721260957105
296
+
439177663744208
297
+
326923812493117
298
+
236648510210453
299
+
203584285187206
300
+
101624973720898
301
+
139686835596394
302
+
385642194351273
303
+
355771581327109
304
+
507031725620620
305
+
524495752783631
306
+
183099410056715
307
+
84666652432595
308
+
351111847252926
309
+
262147501693130
310
+
164427427374203
311
+
385281049138642
312
+
289597306490642
313
+
76340021958996
314
+
257435260207122
315
+
430582357248138
316
+
509982781152513
317
+
277279155207789
318
+
346236778269562
319
+
132684349312958
320
+
183934240303173
321
+
145081289643067
322
+
132132700045925
323
+
5627230448821
324
+
48473306319385
325
+
381141606675121
326
+
420214692698453
327
+
214698997495007
328
+
323592366982384
329
+
168732626366616
330
+
439425803820215
331
+
63544202540563
332
+
138242089047145
333
+
375811194676740
334
+
559140756424209
335
+
101185865779466
336
+
117258746004261
337
+
115284002169991
338
+
365179366412947
339
+
409031671045823
340
+
448091877001324
341
+
557347354586119
342
+
476950836524672
343
+
276154040742885
344
+
455402167884596
345
+
392634529426562
346
+
52549162117863
347
+
139303835304998
348
+
376761760358087
349
+
79314432493330
350
+
393942914626979
351
+
416955689060131
352
+
343218174705566
353
+
380739544437102
354
+
104891885244850
355
+
401670250654630
356
+
88458875946998
357
+
298440458431810
358
+
279287931153785
359
+
489659112268894
360
+
389525783453513
361
+
167889475738004
362
+
410476752564180
363
+
531188923681915
364
+
496070313575527
365
+
148844162663222
366
+
375565285223057
367
+
454869552496741
368
+
16079160074520
369
+
529141968466117
370
+
456309789996017
371
+
355982125422812
372
+
77665783303807
373
+
255415068574128
374
+
419645033859422
375
+
535899565802189
376
+
427026443808551
377
+
304886104235610
378
+
63813191429013
379
+
337592273757387
380
+
316191629977335
381
+
427932266762721
382
+
275051062030262
383
+
287389427660196
384
+
85342152945868
385
+
25120229452331
386
+
207959510733908
387
+
526251060504047
388
+
539965694955807
389
+
137117157822118
390
+
550219108879217
391
+
74742361465476
392
+
446933750202615
393
+
472645873461808
394
+
531905907514767
395
+
527634360277461
396
+
226525561218664
397
+
5513011599653
398
+
319497976104713
399
+
162104761227436
400
+
324339976537342
401
+
395254176289838
402
+
160885730404142
403
+
116775894531633
404
+
548355761034347
405
+
77883725691152
406
+
509378022740168
407
+
143110701934829
408
+
248400739956879
409
+
252816632851765
410
+
124248090164812
411
+
273043580096539
412
+
77248846910575
413
+
108095175460213
414
+
200419577876467
415
+
455439545179548
416
+
255143892965194
417
+
79337431949450
418
+
499486550932403
419
+
151920401525733
420
+
246347931210030
421
+
398264348868158
422
+
356921403632712
423
+
416976978713778
424
+
62550101642256
425
+
539162094904846
426
+
241300223504305
427
+
371234617293083
428
+
377480005378126
429
+
256728882359867
430
+
473817607951163
431
+
404805849509856
432
+
255589957262174
433
+
536003397737518
434
+
409504280780088
435
+
462604266879479
436
+
455610146686064
437
+
139022013893693
438
+
541640250917889
439
+
34135586860392
440
+
528884695574852
441
+
448466312091769
442
+
26127983295753
443
+
158632248635959
444
+
540362092137539
445
+
166361533681704
446
+
347986482489603
447
+
511380069678311
448
+
262607239672299
449
+
456154003553896
450
+
102886612270602
451
+
298852335978173
452
+
397987908749462
453
+
226618499080577
454
+
460049908642141
455
+
174148765268093
456
+
277248892168313
457
+
206195430127836
458
+
346220042130757
459
+
377427157138049
460
+
293683918180939
461
+
510607102677907
462
+
121887407146502
463
+
371302495035340
464
+
192159441360045
465
+
432710956811031
466
+
397908280539056
467
+
521437239297124
468
+
545963436163520
469
+
515805480403501
470
+
206647433890373
471
+
477935784578574
472
+
384122562791212
473
+
237504309474062
474
+
239387803646296
475
+
385616465642634
476
+
121347156729217
477
+
501205030915983
478
+
4164713007124
479
+
144278073591748
480
+
476803224950481
481
+
191571866883374
482
+
197642063769214
483
+
217708004782296
484
+
301280748245662
485
+
79073881133065
486
+
119107650596178
487
+
335138707204953
488
+
452784722707600
489
+
337506667457484
490
+
113724494802352
491
+
254858332488566
492
+
387683614033850
493
+
426292386956773
494
+
214463745624483
495
+
299540905586858
496
+
350550197742116
497
+
536405029293329
498
+
494775402599482
499
+
2582560119292
500
+
89877881326870
501
+
400097828536482
502
+
184830838090784
503
+
176336002630858
504
+
67461897507623
505
+
478995461021135
506
+
66212052730031
507
+
328039865962058
508
+
326092476168529
509
+
25274780856063
510
+
352789983272670
511
+
276431320475127
512
+
133999347173556
513
+
111279717488096
514
+
343266002684336
515
+
474028558955039
516
+
174619394455543
517
+
162732324430877
518
+
113448726562399
519
+
259456334175541
520
+
537017932790511
521
+
256853952618920
522
+
150111292636639
523
+
277526884477793
524
+
510559701678610
525
+
249878769050331
526
+
385842702926764
527
+
15186474043730
528
+
156884477804410
529
+
275247335709306
530
+
416740982448921
531
+
300462543096595
532
+
278531216467315
533
+
16332494626990
534
+
282875090733536
535
+
5872643715074
536
+
300042207849628
537
+
456104839840493
538
+
287174965481715
539
+
207117476286466
540
+
394987711786195
541
+
400207956239096
542
+
387260891911120
543
+
524592377138341
544
+
415784639512725
545
+
410596586356053
546
+
248405579939633
547
+
338855127817907
548
+
146033129177226
549
+
517742414815392
550
+
471230574297887
551
+
546712543433971
552
+
538391752986732
553
+
186906067746185
554
+
22509342552195
555
+
85625730211494
556
+
538910150773912
557
+
132420618246240
558
+
284414081405754
559
+
255891448972987
560
+
196857919027085
561
+
138738791817002
562
+
485493440771638
563
+
147747408894904
564
+
33245855503122
565
+
421102519976991
566
+
108184025390613
567
+
131789306489093
568
+
343148913656154
569
+
314062251052588
570
+
23891222108866
571
+
294396601766718
572
+
136961347844318
573
+
385797126658710
574
+
36852707675320
575
+
155408024053040
576
+
562391020571128
577
+
318250946457455
578
+
484794697907639
579
+
269127810495416
580
+
24673202576945
581
+
401486731731305
582
+
166990997418947
583
+
48645416709342
584
+
240560106665056
585
+
407276162339995
586
+
242965253828537
587
+
176797321556635
588
+
208847827219988
589
+
135565798765472
590
+
326859246103528
591
+
135198931577480
592
+
410885360168920
593
+
555348188358315
594
+
64233815465165
595
+
307676899028702
596
+
168160314639706
597
+
113660045194141
598
+
3128220114794
599
+
420257558459001
600
+
395295630150417
601
+
454636247945816
602
+
3912100568058
603
+
494987442103801
604
+
335326780570776
605
+
75802547174538
606
+
378193105275106
607
+
138945925852743
608
+
384233285798074
609
+
400365114660432
610
+
65737092191342
611
+
286757515297424
612
+
232114444758437
613
+
289104482288261
614
+
223453260053196
615
+
506228647097813
616
+
559481202416651
617
+
137336699186386
618
+
380487096861383
619
+
118245803037563
620
+
122415671398605
621
+
395932516015848
622
+
167790904763894
623
+
65069567652510
624
+
315128784107527
625
+
67125705937428
626
+
103603394318896
627
+
35385192134369
628
+
530173165429241
629
+
61725685300127
630
+
322602007668223
631
+
439387247925334
632
+
503418099642988
633
+
484067158942713
634
+
531849439905068
635
+
224459007739261
636
+
24378087402780
637
+
2090476358503
638
+
383461739326334
639
+
476060700905306
640
+
505276675340888
641
+
236031974956105
642
+
377951917531087
643
+
305903237010845
644
+
334278173181544
645
+
96194049575420
646
+
107191325459762
647
+
257553430116094
648
+
184960433166364
649
+
128404000675271
650
+
54087565604499
651
+
296324196697139
652
+
485118648856374
653
+
407718809040549
654
+
114039487816787
655
+
409597366793132
656
+
405161536291390
657
+
475151482301763
658
+
185757824602754
659
+
527831890043980
660
+
508515681994562
661
+
302259042109687
662
+
479888176285502
663
+
37430750914659
664
+
495167532286372
665
+
2245085885737
666
+
191980106108419
667
+
106185415623900
668
+
90785673324634
669
+
385723748232181
670
+
377401924893285
671
+
370806548023962
672
+
328904038345546
673
+
289101637320534
674
+
48387659479037
675
+
438413210453605
676
+
138031258795004
677
+
36848011421152
678
+
251975389894768
679
+
430485690000143
680
+
370022736362871
681
+
54325220063190
682
+
93315079111354
683
+
234792194674992
684
+
299181675379516
685
+
199867118084202
686
+
447200493402353
687
+
55093856317585
688
+
455429252586707
689
+
13982586844900
690
+
81913111360659
691
+
287572871184619
692
+
506866685578822
693
+
247684641487649
694
+
417035324377295
695
+
338068029231776
696
+
185739412688546
697
+
558172813082916
698
+
241288155016777
699
+
286910058459724
700
+
86362733475456
701
+
135487703859586
702
+
549534590875975
703
+
252344411558105
704
+
251457584553746
705
+
109015390838264
706
+
398033365679282
707
+
369972994863616
708
+
390451769918555
709
+
266647736384980
710
+
385957200620673
711
+
543364449059874
712
+
454726294169283
713
+
13913836326415
714
+
226211403507929
715
+
224941477401670
716
+
456832903203951
717
+
191797765138125
718
+
524061239673962
719
+
375982974685691
720
+
536150717345034
721
+
293616346522039
722
+
126501835719822
723
+
279884390123033
724
+
350827911840968
725
+
557928976098849
726
+
341417081837800
727
+
284436254344417
728
+
479366194607605
729
+
163235426756573
730
+
314272700526518
731
+
205048888497471
732
+
256187819498826
733
+
546762427419358
734
+
487593130608709
735
+
363195648042915
736
+
531786619046694
737
+
357724622349762
738
+
505159674786341
739
+
386031269423540
740
+
167135877727039
741
+
148805569159387
742
+
66651488174771
743
+
348938161012725
744
+
78798843584284
745
+
177370666445446
746
+
253022239408246
747
+
516459668991453
748
+
95954548928192
749
+
138731604119786
750
+
242916105575718
751
+
509267655662974
752
+
164008930892787
753
+
106317666384571
754
+
409990481363994
755
+
154290711081875
756
+
201821843876119
757
+
88332126514130
758
+
237295909029197
759
+
467793554347828
760
+
45462740864705
761
+
268342166705726
762
+
529361112647572
763
+
36811532703769
764
+
552473505016593
765
+
397401572712223
766
+
206517687660965
767
+
34739741517387
768
+
485853082904292
769
+
329515805678682
770
+
250068097201362
771
+
5811305089566
772
+
60724160854507
773
+
186356501715046
774
+
42837916522207
775
+
555239978784550
776
+
47823342086949
777
+
320101501978074
778
+
43822102671002
779
+
521057735127340
780
+
108850874680057
781
+
522590519745349
782
+
524831363124357
783
+
253262685355816
784
+
449003256981423
785
+
41701122847104
786
+
269402097973798
787
+
541460349412143
788
+
509958043383506
789
+
7492668588823
790
+
90419359720951
791
+
196346261986016
792
+
208655722081067
793
+
554810298887769
794
+
513936709731233
795
+
181884588463345
796
+
541323800446004
797
+
362502397813743
798
+
338532779807647
799
+
393781827440381
800
+
484231163934835
801
+
37368887642636
802
+
558795326921854
803
+
552195424786532
804
+
487686086722100
805
+
134352870412141
806
+
10548867200531
807
+
60122626473134
808
+
3489391142590
809
+
216173153241746
810
+
214521290960992
811
+
44663209553865
812
+
496592595794476
813
+
417402679166151
814
+
389296175879080
815
+
73443182146421
816
+
484184471167513
817
+
87648380690651
818
+
76411099990958
819
+
376672915838595
820
+
416662481674533
821
+
418842094034787
822
+
177174243842776
823
+
360917121735286
824
+
37441255895228
825
+
264108716674645
826
+
299362787720432
827
+
505099464111505
828
+
364159003514922
829
+
413516151514861
830
+
548892821365930
831
+
327323809169901
832
+
53168968429945
833
+
210203102429476
834
+
105658860188691
835
+
508939674970622
836
+
245680776161395
837
+
288072594863946
838
+
546066920142152
839
+
408984495717515
840
+
88204503487301
841
+
420219365055917
842
+
437310420649854
843
+
84872120349774
844
+
194751885779582
845
+
208701305452937
846
+
351563087499086
847
+
450129679644429
848
+
148666187688590
849
+
239236123519534
850
+
113251449388132
851
+
446206949516497
852
+
246000641386074
853
+
252689833153796
854
+
435334860574873
855
+
341717773220089
856
+
64549016645535
857
+
213699870249320
858
+
298451558239307
859
+
185278005691907
860
+
8134577132657
861
+
261966279442499
862
+
315840584607737
863
+
353094021415400
864
+
330463604552237
865
+
396511234431585
866
+
351811096797895
867
+
24116628523626
868
+
327266253863210
869
+
524772929314460
870
+
286262429143047
871
+
112044214186910
872
+
497421176479944
873
+
209963628211988
874
+
364921149568555
875
+
222616259826373
876
+
167494081960892
877
+
499698833223075
878
+
380451940256767
879
+
376298943098954
880
+
208462778895259
881
+
257822644313233
882
+
458960916901113
883
+
500268391272039
884
+
138998774243410
885
+
286056250666152
886
+
14226665041036
887
+
554490653927807
888
+
205493591904944
889
+
311093374336015
890
+
136566800754788
891
+
218133725663833
892
+
274814661165851
893
+
534750291151638
894
+
214709273517981
895
+
79281401204290
896
+
224764905953198
897
+
322817916117121
898
+
548877324865482
899
+
206660505085085
900
+
495570162464287
901
+
537221325061609
902
+
277228017007164
903
+
509785550628771
904
+
79038292162381
905
+
149362868524492
906
+
50267611008838
907
+
117076334817031
908
+
396942178239874
909
+
483805769198573
910
+
110075887030993
911
+
398662759960312
912
+
513825778885855
913
+
372385946611796
914
+
126762615156838
915
+
501602330801394
916
+
148063225053668
917
+
427379720548000
918
+
538338046892758
919
+
286349639477622
920
+
517525189535154
921
+
323949348355715
922
+
485239694769451
923
+
66347360844789
924
+
75709762798959
925
+
286275492542680
926
+
466563938524428
927
+
491060402282968
928
+
114180510960550
929
+
24220681424443
930
+
401529619714595
931
+
350999068436663
932
+
73666255044195
933
+
315283280221678
934
+
486567916582595
935
+
386988771968788
936
+
547091287233054
937
+
199251969596551
938
+
262367207773360
939
+
147700215775683
940
+
323559607834129
941
+
343865160780162
942
+
352839210417144
943
+
286789170597857
944
+
144046104082154
945
+
297615167536211
946
+
204569901882174
947
+
244464598977365
948
+
440172658100605
949
+
49393055561078
950
+
440441952930071
951
+
62529050272603
952
+
213465906163506
953
+
431116933276249
954
+
388099250625889
955
+
440313935879579
956
+
485454470084470
957
+
515122155140488
958
+
352527058113869
959
+
539626852470189
960
+
308549434850357
961
+
271630505884632
962
+
79091553688646
963
+
204467863152245
964
+
507389383841226
965
+
150081616230541
966
+
48614681735400
967
+
38494761645721
968
+
400962294931237
969
+
196541694588791
970
+
509404781754297
971
+
22613353976910
972
+
359141441034099
973
+
347125970907508
974
+
88112667765826
975
+
375234617586179
976
+
541561456822743
977
+
43487805824682
978
+
245580139924720
979
+
61925346936953
980
+
524104340406426
981
+
257313383539798
982
+
257467918677062
983
+
118564317819358
984
+
392750785087973
985
+
263279929238613
986
+
266743143547903
987
+
28887057819205
988
+
560448405152026
989
+
475670452878736
990
+
68976100885144
991
+
119371715353960
992
+
416764485629505
993
+
117454786396455
994
+
28107867060982
995
+
181617471419198
996
+
324286432815230
997
+
376470658175284
998
+
554862101454165
999
+
528158502920611
1000
+
281947519810737
1001
+
502628687780946
1002
+
554328274194757
1003
+
427533335712174
1004
+
15753321044802
1005
+
396204966666336
1006
+
165759879810321
1007
+
483836196305874
1008
+
236642041182378
1009
+
28707001290911
1010
+
453941000159908
1011
+
239378018801579
1012
+
295395596552203
1013
+
129744526281154
1014
+
509996132214665
1015
+
18817467919836
1016
+
69011914271435
1017
+
528770649907953
1018
+
464924927383704
1019
+
111167850070594
1020
+
499398260633297
1021
+
203338517303186
1022
+
271121505006292
1023
+
530430854732561
1024
+
253618104548448
1025
+
367185126207437
1026
+
275919660389158
1027
+
87873304408612
1028
+
543450629096424
1029
+
335477470153767
1030
+
531185565092995
1031
+
353467590596917
1032
+
539558595034365
1033
+
225598648475121
1034
+
4266598824125
1035
+
191304659850847
1036
+
453551208518017
1037
+
357295063001348
1038
+
263186304559599
1039
+
300999306013676
1040
+
77019074405259
1041
+
226263109115314
1042
+
248493294223107
1043
+
76051058021610
1044
+
281446420791413
1045
+
165573379200741
1046
+
208551587249223
1047
+
167271839095269
1048
+
383400878284206
1049
+
298337501656080
1050
+
124172939953146
1051
+
555516114071984
1052
+
495886062434862
1053
+
370105294988027
1054
+
117518571341234
1055
+
535396467789758
1056
+
462531694761674
1057
+
501182977540792
1058
+
204496381162149
1059
+
25969155651589
1060
+
467727993347850
1061
+
353565855652763
1062
+
107307789527891
1063
+
191835803404538
1064
+
436143175338541
1065
+
246324312888904
1066
+
27569427736847
1067
+
26574523143644
1068
+
139788807089135
1069
+
176401248007787
1070
+
224258345415143
1071
+
528751806467589
1072
+
452711776828434
1073
+
3422299653756
1074
+
155986186068180
1075
+
410378589362967
1076
+
415145311387608
1077
+
179958057198998
1078
+
267710841876153
1079
+
496649721067563
1080
+
6017796745068
1081
+
298191870572960
1082
+
393165757002946
1083
+
65769991202474
1084
+
253237962273185
1085
+
209146854330194
1086
+
107757689277939
1087
+
443902289475155
1088
+
327302234127556
1089
+
379337635400148
1090
+
122249492301373
1091
+
517281519310874
1092
+
408584526628391
1093
+
453273285660630
1094
+
115058082240098
1095
+
265469790821220
1096
+
198447908303968
1097
+
93868274574192
1098
+
503279938554547
1099
+
268867654076452
1100
+
453784106826062
1101
+
175503260355149
1102
+
84101857588793
1103
+
324115653720005
1104
+
467419147023362
1105
+
51418409329448
1106
+
72864581581592
1107
+
104393802122250
1108
+
160012575558600
1109
+
338831657068830
1110
+
357455127413667
1111
+
143756694868069
1112
+
215217688048563
1113
+
537027874668719
1114
+
73932131117673
1115
+
74181200853882
1116
+
554540963128042
1117
+
486317747175726
1118
+
127243450453974
1119
+
204813394215205
1120
+
507073368512394
1121
+
113200659469356
1122
+
166888784896861
1123
+
253884791723332
1124
+
313515157965308
1125
+
326221984355446
1126
+
436287539073725
1127
+
560950751003125
1128
+
416839043124797
1129
+
124348810428443
1130
+
274103286464266
1131
+
118685215448145
1132
+
548999961779691
1133
+
457117834790631
1134
+
167566351250786
1135
+
363140782790450
1136
+
291713213362971
1137
+
102909906319888
1138
+
507891379594132
1139
+
524090581833788
1140
+
431695964171760
1141
+
528260720020178
1142
+
215538497228820
1143
+
265015077579563
1144
+
339652161321033
1145
+
516261525562674
1146
+
437570091922631
1147
+
490514737665222
1148
+
39629294184591
1149
+
132080844454118
1150
+
87126816519167
1151
+
357542868502579
1152
+
83614098374336
1153
+
556110799346171
1154
+
547616707073349
1155
+
47428347578027
1156
+
339955543030250
1157
+
466654836920333
1158
+
540612031208814
1159
+
75068256263748
1160
+
253332988043717
1161
+
516559830977242
1162
+
103091334549787
1163
+
1857237753590
1164
+
48231689767618
1165
+
460056775695850
1166
+
505801010046218
1167
+
476826442637823
1168
+
506362177553486
1169
+
143364931880380
1170
+
276066489933080
1171
+
338528060828864
1172
+
464816954524112
1173
+
469791767111983
1174
+
455523496219358
1175
+
297177825168277
1176
+
546323555093840
1177
+
176252665665347
1178
+
185104463289193
1179
+
535349486532929
1180
+
393353469154641
1181
+
63080739338750
1182
+
297406102825472
1183
+
248597051099131
1184
+
441114193997943
1185
+
448757303674787
1186
+
78008363064472
1187
+
471216568470612
1188
+
506677522986754
+11
inputs/day5test.txt
+11
inputs/day5test.txt
+76
src/day5.zig
+76
src/day5.zig
···
1
+
const std = @import("std");
2
+
const Allocator = std.mem.Allocator;
3
+
const ArrayList = std.ArrayList;
4
+
5
+
const Range = struct {
6
+
low: usize,
7
+
high: usize,
8
+
9
+
pub fn compareByLow(_: void, a: Range, b: Range) bool {
10
+
return a.low < b.low;
11
+
}
12
+
};
13
+
14
+
pub fn run(allocator: Allocator, input: []u8) !void {
15
+
var sections = std.mem.tokenizeSequence(u8, input, "\n\n");
16
+
17
+
var answer1: u64 = 0;
18
+
var answer2: u64 = 0;
19
+
20
+
var ranges = std.mem.tokenizeScalar(u8, sections.next().?, '\n');
21
+
var items = std.mem.tokenizeScalar(u8, sections.next().?, '\n');
22
+
23
+
var valid_ranges = try ArrayList(Range).initCapacity(allocator, 100);
24
+
defer valid_ranges.deinit(allocator);
25
+
26
+
var max: u64 = 0;
27
+
28
+
while (ranges.next()) |line| {
29
+
var range = std.mem.tokenizeScalar(u8, line, '-');
30
+
31
+
const low = try std.fmt.parseInt(u64, range.next().?, 10);
32
+
const high = try std.fmt.parseInt(u64, range.next().?, 10);
33
+
34
+
if (high > max) {
35
+
max = high;
36
+
}
37
+
38
+
try valid_ranges.append(allocator, .{ .low = low, .high = high });
39
+
}
40
+
41
+
while (items.next()) |line| {
42
+
const id = try std.fmt.parseInt(usize, line, 10);
43
+
44
+
for (valid_ranges.items) |range| {
45
+
if (range.low <= id and id <= range.high) {
46
+
answer1 += 1;
47
+
break;
48
+
}
49
+
}
50
+
}
51
+
52
+
std.mem.sort(Range, valid_ranges.items, {}, Range.compareByLow);
53
+
54
+
var merged_ranges = try ArrayList(Range).initCapacity(allocator, valid_ranges.items.len);
55
+
defer merged_ranges.deinit(allocator);
56
+
for (valid_ranges.items[0 .. valid_ranges.items.len - 1], 0..) |item, i| {
57
+
var other = &valid_ranges.items[i + 1];
58
+
if (item.high < other.low) {
59
+
try merged_ranges.append(allocator, item);
60
+
continue;
61
+
}
62
+
63
+
other.low = item.low;
64
+
if (other.high < item.high) {
65
+
other.high = item.high;
66
+
}
67
+
}
68
+
try merged_ranges.append(allocator, valid_ranges.getLast());
69
+
70
+
for (merged_ranges.items) |item| {
71
+
answer2 += item.high - item.low + 1;
72
+
}
73
+
74
+
std.debug.print("Answer P1: {d}\n", .{answer1});
75
+
std.debug.print("Answer P2: {d}\n", .{answer2});
76
+
}
+2
src/main.zig
+2
src/main.zig
···
3
3
const day2 = @import("./day2.zig");
4
4
const day3 = @import("./day3.zig");
5
5
const day4 = @import("./day4.zig");
6
+
const day5 = @import("./day5.zig");
6
7
7
8
pub fn main() !void {
8
9
var args = std.process.args();
···
37
38
2 => try day2.run(input_content),
38
39
3 => try day3.run(input_content),
39
40
4 => try day4.run(input_content),
41
+
5 => try day5.run(allocator, input_content),
40
42
else => {},
41
43
}
42
44
}