summaryrefslogtreecommitdiff
path: root/kattis-kth/javap-windows
diff options
context:
space:
mode:
authormathiasmagnusson <mathiasmagnussons@gmail.com>2022-12-09 18:00:41 +0100
committermathiasmagnusson <mathiasmagnussons@gmail.com>2022-12-09 18:00:41 +0100
commita1eb38bebe6ce1668c3f96489506c3b05b9fe5cb (patch)
treecccf0fd4763dba123efab7c896292dc18d1eb458 /kattis-kth/javap-windows
parente41e6c8bc72e3300a0fa137f198454341bc315b1 (diff)
downloadprogramming-problem-solving-a1eb38bebe6ce1668c3f96489506c3b05b9fe5cb.tar.gz
Move stuff around
Diffstat (limited to 'kattis-kth/javap-windows')
-rw-r--r--kattis-kth/javap-windows/Cargo.lock7
-rw-r--r--kattis-kth/javap-windows/Cargo.toml8
-rw-r--r--kattis-kth/javap-windows/input1001
-rw-r--r--kattis-kth/javap-windows/src/main.rs119
4 files changed, 1135 insertions, 0 deletions
diff --git a/kattis-kth/javap-windows/Cargo.lock b/kattis-kth/javap-windows/Cargo.lock
new file mode 100644
index 0000000..f555c2e
--- /dev/null
+++ b/kattis-kth/javap-windows/Cargo.lock
@@ -0,0 +1,7 @@
+# This file is automatically @generated by Cargo.
+# It is not intended for manual editing.
+version = 3
+
+[[package]]
+name = "javap-windows"
+version = "0.1.0"
diff --git a/kattis-kth/javap-windows/Cargo.toml b/kattis-kth/javap-windows/Cargo.toml
new file mode 100644
index 0000000..4e6ffb8
--- /dev/null
+++ b/kattis-kth/javap-windows/Cargo.toml
@@ -0,0 +1,8 @@
+[package]
+name = "javap-windows"
+version = "0.1.0"
+edition = "2021"
+
+# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
+
+[dependencies]
diff --git a/kattis-kth/javap-windows/input b/kattis-kth/javap-windows/input
new file mode 100644
index 0000000..7a0afaa
--- /dev/null
+++ b/kattis-kth/javap-windows/input
@@ -0,0 +1,1001 @@
+1000
+1 1 8001 8001
+3 3 8003 8003
+5 5 8005 8005
+7 7 8007 8007
+9 9 8009 8009
+11 11 8011 8011
+13 13 8013 8013
+15 15 8015 8015
+17 17 8017 8017
+19 19 8019 8019
+21 21 8021 8021
+23 23 8023 8023
+25 25 8025 8025
+27 27 8027 8027
+29 29 8029 8029
+31 31 8031 8031
+33 33 8033 8033
+35 35 8035 8035
+37 37 8037 8037
+39 39 8039 8039
+41 41 8041 8041
+43 43 8043 8043
+45 45 8045 8045
+47 47 8047 8047
+49 49 8049 8049
+51 51 8051 8051
+53 53 8053 8053
+55 55 8055 8055
+57 57 8057 8057
+59 59 8059 8059
+61 61 8061 8061
+63 63 8063 8063
+65 65 8065 8065
+67 67 8067 8067
+69 69 8069 8069
+71 71 8071 8071
+73 73 8073 8073
+75 75 8075 8075
+77 77 8077 8077
+79 79 8079 8079
+81 81 8081 8081
+83 83 8083 8083
+85 85 8085 8085
+87 87 8087 8087
+89 89 8089 8089
+91 91 8091 8091
+93 93 8093 8093
+95 95 8095 8095
+97 97 8097 8097
+99 99 8099 8099
+101 101 8101 8101
+103 103 8103 8103
+105 105 8105 8105
+107 107 8107 8107
+109 109 8109 8109
+111 111 8111 8111
+113 113 8113 8113
+115 115 8115 8115
+117 117 8117 8117
+119 119 8119 8119
+121 121 8121 8121
+123 123 8123 8123
+125 125 8125 8125
+127 127 8127 8127
+129 129 8129 8129
+131 131 8131 8131
+133 133 8133 8133
+135 135 8135 8135
+137 137 8137 8137
+139 139 8139 8139
+141 141 8141 8141
+143 143 8143 8143
+145 145 8145 8145
+147 147 8147 8147
+149 149 8149 8149
+151 151 8151 8151
+153 153 8153 8153
+155 155 8155 8155
+157 157 8157 8157
+159 159 8159 8159
+161 161 8161 8161
+163 163 8163 8163
+165 165 8165 8165
+167 167 8167 8167
+169 169 8169 8169
+171 171 8171 8171
+173 173 8173 8173
+175 175 8175 8175
+177 177 8177 8177
+179 179 8179 8179
+181 181 8181 8181
+183 183 8183 8183
+185 185 8185 8185
+187 187 8187 8187
+189 189 8189 8189
+191 191 8191 8191
+193 193 8193 8193
+195 195 8195 8195
+197 197 8197 8197
+199 199 8199 8199
+201 201 8201 8201
+203 203 8203 8203
+205 205 8205 8205
+207 207 8207 8207
+209 209 8209 8209
+211 211 8211 8211
+213 213 8213 8213
+215 215 8215 8215
+217 217 8217 8217
+219 219 8219 8219
+221 221 8221 8221
+223 223 8223 8223
+225 225 8225 8225
+227 227 8227 8227
+229 229 8229 8229
+231 231 8231 8231
+233 233 8233 8233
+235 235 8235 8235
+237 237 8237 8237
+239 239 8239 8239
+241 241 8241 8241
+243 243 8243 8243
+245 245 8245 8245
+247 247 8247 8247
+249 249 8249 8249
+251 251 8251 8251
+253 253 8253 8253
+255 255 8255 8255
+257 257 8257 8257
+259 259 8259 8259
+261 261 8261 8261
+263 263 8263 8263
+265 265 8265 8265
+267 267 8267 8267
+269 269 8269 8269
+271 271 8271 8271
+273 273 8273 8273
+275 275 8275 8275
+277 277 8277 8277
+279 279 8279 8279
+281 281 8281 8281
+283 283 8283 8283
+285 285 8285 8285
+287 287 8287 8287
+289 289 8289 8289
+291 291 8291 8291
+293 293 8293 8293
+295 295 8295 8295
+297 297 8297 8297
+299 299 8299 8299
+301 301 8301 8301
+303 303 8303 8303
+305 305 8305 8305
+307 307 8307 8307
+309 309 8309 8309
+311 311 8311 8311
+313 313 8313 8313
+315 315 8315 8315
+317 317 8317 8317
+319 319 8319 8319
+321 321 8321 8321
+323 323 8323 8323
+325 325 8325 8325
+327 327 8327 8327
+329 329 8329 8329
+331 331 8331 8331
+333 333 8333 8333
+335 335 8335 8335
+337 337 8337 8337
+339 339 8339 8339
+341 341 8341 8341
+343 343 8343 8343
+345 345 8345 8345
+347 347 8347 8347
+349 349 8349 8349
+351 351 8351 8351
+353 353 8353 8353
+355 355 8355 8355
+357 357 8357 8357
+359 359 8359 8359
+361 361 8361 8361
+363 363 8363 8363
+365 365 8365 8365
+367 367 8367 8367
+369 369 8369 8369
+371 371 8371 8371
+373 373 8373 8373
+375 375 8375 8375
+377 377 8377 8377
+379 379 8379 8379
+381 381 8381 8381
+383 383 8383 8383
+385 385 8385 8385
+387 387 8387 8387
+389 389 8389 8389
+391 391 8391 8391
+393 393 8393 8393
+395 395 8395 8395
+397 397 8397 8397
+399 399 8399 8399
+401 401 8401 8401
+403 403 8403 8403
+405 405 8405 8405
+407 407 8407 8407
+409 409 8409 8409
+411 411 8411 8411
+413 413 8413 8413
+415 415 8415 8415
+417 417 8417 8417
+419 419 8419 8419
+421 421 8421 8421
+423 423 8423 8423
+425 425 8425 8425
+427 427 8427 8427
+429 429 8429 8429
+431 431 8431 8431
+433 433 8433 8433
+435 435 8435 8435
+437 437 8437 8437
+439 439 8439 8439
+441 441 8441 8441
+443 443 8443 8443
+445 445 8445 8445
+447 447 8447 8447
+449 449 8449 8449
+451 451 8451 8451
+453 453 8453 8453
+455 455 8455 8455
+457 457 8457 8457
+459 459 8459 8459
+461 461 8461 8461
+463 463 8463 8463
+465 465 8465 8465
+467 467 8467 8467
+469 469 8469 8469
+471 471 8471 8471
+473 473 8473 8473
+475 475 8475 8475
+477 477 8477 8477
+479 479 8479 8479
+481 481 8481 8481
+483 483 8483 8483
+485 485 8485 8485
+487 487 8487 8487
+489 489 8489 8489
+491 491 8491 8491
+493 493 8493 8493
+495 495 8495 8495
+497 497 8497 8497
+499 499 8499 8499
+501 501 8501 8501
+503 503 8503 8503
+505 505 8505 8505
+507 507 8507 8507
+509 509 8509 8509
+511 511 8511 8511
+513 513 8513 8513
+515 515 8515 8515
+517 517 8517 8517
+519 519 8519 8519
+521 521 8521 8521
+523 523 8523 8523
+525 525 8525 8525
+527 527 8527 8527
+529 529 8529 8529
+531 531 8531 8531
+533 533 8533 8533
+535 535 8535 8535
+537 537 8537 8537
+539 539 8539 8539
+541 541 8541 8541
+543 543 8543 8543
+545 545 8545 8545
+547 547 8547 8547
+549 549 8549 8549
+551 551 8551 8551
+553 553 8553 8553
+555 555 8555 8555
+557 557 8557 8557
+559 559 8559 8559
+561 561 8561 8561
+563 563 8563 8563
+565 565 8565 8565
+567 567 8567 8567
+569 569 8569 8569
+571 571 8571 8571
+573 573 8573 8573
+575 575 8575 8575
+577 577 8577 8577
+579 579 8579 8579
+581 581 8581 8581
+583 583 8583 8583
+585 585 8585 8585
+587 587 8587 8587
+589 589 8589 8589
+591 591 8591 8591
+593 593 8593 8593
+595 595 8595 8595
+597 597 8597 8597
+599 599 8599 8599
+601 601 8601 8601
+603 603 8603 8603
+605 605 8605 8605
+607 607 8607 8607
+609 609 8609 8609
+611 611 8611 8611
+613 613 8613 8613
+615 615 8615 8615
+617 617 8617 8617
+619 619 8619 8619
+621 621 8621 8621
+623 623 8623 8623
+625 625 8625 8625
+627 627 8627 8627
+629 629 8629 8629
+631 631 8631 8631
+633 633 8633 8633
+635 635 8635 8635
+637 637 8637 8637
+639 639 8639 8639
+641 641 8641 8641
+643 643 8643 8643
+645 645 8645 8645
+647 647 8647 8647
+649 649 8649 8649
+651 651 8651 8651
+653 653 8653 8653
+655 655 8655 8655
+657 657 8657 8657
+659 659 8659 8659
+661 661 8661 8661
+663 663 8663 8663
+665 665 8665 8665
+667 667 8667 8667
+669 669 8669 8669
+671 671 8671 8671
+673 673 8673 8673
+675 675 8675 8675
+677 677 8677 8677
+679 679 8679 8679
+681 681 8681 8681
+683 683 8683 8683
+685 685 8685 8685
+687 687 8687 8687
+689 689 8689 8689
+691 691 8691 8691
+693 693 8693 8693
+695 695 8695 8695
+697 697 8697 8697
+699 699 8699 8699
+701 701 8701 8701
+703 703 8703 8703
+705 705 8705 8705
+707 707 8707 8707
+709 709 8709 8709
+711 711 8711 8711
+713 713 8713 8713
+715 715 8715 8715
+717 717 8717 8717
+719 719 8719 8719
+721 721 8721 8721
+723 723 8723 8723
+725 725 8725 8725
+727 727 8727 8727
+729 729 8729 8729
+731 731 8731 8731
+733 733 8733 8733
+735 735 8735 8735
+737 737 8737 8737
+739 739 8739 8739
+741 741 8741 8741
+743 743 8743 8743
+745 745 8745 8745
+747 747 8747 8747
+749 749 8749 8749
+751 751 8751 8751
+753 753 8753 8753
+755 755 8755 8755
+757 757 8757 8757
+759 759 8759 8759
+761 761 8761 8761
+763 763 8763 8763
+765 765 8765 8765
+767 767 8767 8767
+769 769 8769 8769
+771 771 8771 8771
+773 773 8773 8773
+775 775 8775 8775
+777 777 8777 8777
+779 779 8779 8779
+781 781 8781 8781
+783 783 8783 8783
+785 785 8785 8785
+787 787 8787 8787
+789 789 8789 8789
+791 791 8791 8791
+793 793 8793 8793
+795 795 8795 8795
+797 797 8797 8797
+799 799 8799 8799
+801 801 8801 8801
+803 803 8803 8803
+805 805 8805 8805
+807 807 8807 8807
+809 809 8809 8809
+811 811 8811 8811
+813 813 8813 8813
+815 815 8815 8815
+817 817 8817 8817
+819 819 8819 8819
+821 821 8821 8821
+823 823 8823 8823
+825 825 8825 8825
+827 827 8827 8827
+829 829 8829 8829
+831 831 8831 8831
+833 833 8833 8833
+835 835 8835 8835
+837 837 8837 8837
+839 839 8839 8839
+841 841 8841 8841
+843 843 8843 8843
+845 845 8845 8845
+847 847 8847 8847
+849 849 8849 8849
+851 851 8851 8851
+853 853 8853 8853
+855 855 8855 8855
+857 857 8857 8857
+859 859 8859 8859
+861 861 8861 8861
+863 863 8863 8863
+865 865 8865 8865
+867 867 8867 8867
+869 869 8869 8869
+871 871 8871 8871
+873 873 8873 8873
+875 875 8875 8875
+877 877 8877 8877
+879 879 8879 8879
+881 881 8881 8881
+883 883 8883 8883
+885 885 8885 8885
+887 887 8887 8887
+889 889 8889 8889
+891 891 8891 8891
+893 893 8893 8893
+895 895 8895 8895
+897 897 8897 8897
+899 899 8899 8899
+901 901 8901 8901
+903 903 8903 8903
+905 905 8905 8905
+907 907 8907 8907
+909 909 8909 8909
+911 911 8911 8911
+913 913 8913 8913
+915 915 8915 8915
+917 917 8917 8917
+919 919 8919 8919
+921 921 8921 8921
+923 923 8923 8923
+925 925 8925 8925
+927 927 8927 8927
+929 929 8929 8929
+931 931 8931 8931
+933 933 8933 8933
+935 935 8935 8935
+937 937 8937 8937
+939 939 8939 8939
+941 941 8941 8941
+943 943 8943 8943
+945 945 8945 8945
+947 947 8947 8947
+949 949 8949 8949
+951 951 8951 8951
+953 953 8953 8953
+955 955 8955 8955
+957 957 8957 8957
+959 959 8959 8959
+961 961 8961 8961
+963 963 8963 8963
+965 965 8965 8965
+967 967 8967 8967
+969 969 8969 8969
+971 971 8971 8971
+973 973 8973 8973
+975 975 8975 8975
+977 977 8977 8977
+979 979 8979 8979
+981 981 8981 8981
+983 983 8983 8983
+985 985 8985 8985
+987 987 8987 8987
+989 989 8989 8989
+991 991 8991 8991
+993 993 8993 8993
+995 995 8995 8995
+997 997 8997 8997
+999 999 8999 8999
+1001 1001 9001 9001
+1003 1003 9003 9003
+1005 1005 9005 9005
+1007 1007 9007 9007
+1009 1009 9009 9009
+1011 1011 9011 9011
+1013 1013 9013 9013
+1015 1015 9015 9015
+1017 1017 9017 9017
+1019 1019 9019 9019
+1021 1021 9021 9021
+1023 1023 9023 9023
+1025 1025 9025 9025
+1027 1027 9027 9027
+1029 1029 9029 9029
+1031 1031 9031 9031
+1033 1033 9033 9033
+1035 1035 9035 9035
+1037 1037 9037 9037
+1039 1039 9039 9039
+1041 1041 9041 9041
+1043 1043 9043 9043
+1045 1045 9045 9045
+1047 1047 9047 9047
+1049 1049 9049 9049
+1051 1051 9051 9051
+1053 1053 9053 9053
+1055 1055 9055 9055
+1057 1057 9057 9057
+1059 1059 9059 9059
+1061 1061 9061 9061
+1063 1063 9063 9063
+1065 1065 9065 9065
+1067 1067 9067 9067
+1069 1069 9069 9069
+1071 1071 9071 9071
+1073 1073 9073 9073
+1075 1075 9075 9075
+1077 1077 9077 9077
+1079 1079 9079 9079
+1081 1081 9081 9081
+1083 1083 9083 9083
+1085 1085 9085 9085
+1087 1087 9087 9087
+1089 1089 9089 9089
+1091 1091 9091 9091
+1093 1093 9093 9093
+1095 1095 9095 9095
+1097 1097 9097 9097
+1099 1099 9099 9099
+1101 1101 9101 9101
+1103 1103 9103 9103
+1105 1105 9105 9105
+1107 1107 9107 9107
+1109 1109 9109 9109
+1111 1111 9111 9111
+1113 1113 9113 9113
+1115 1115 9115 9115
+1117 1117 9117 9117
+1119 1119 9119 9119
+1121 1121 9121 9121
+1123 1123 9123 9123
+1125 1125 9125 9125
+1127 1127 9127 9127
+1129 1129 9129 9129
+1131 1131 9131 9131
+1133 1133 9133 9133
+1135 1135 9135 9135
+1137 1137 9137 9137
+1139 1139 9139 9139
+1141 1141 9141 9141
+1143 1143 9143 9143
+1145 1145 9145 9145
+1147 1147 9147 9147
+1149 1149 9149 9149
+1151 1151 9151 9151
+1153 1153 9153 9153
+1155 1155 9155 9155
+1157 1157 9157 9157
+1159 1159 9159 9159
+1161 1161 9161 9161
+1163 1163 9163 9163
+1165 1165 9165 9165
+1167 1167 9167 9167
+1169 1169 9169 9169
+1171 1171 9171 9171
+1173 1173 9173 9173
+1175 1175 9175 9175
+1177 1177 9177 9177
+1179 1179 9179 9179
+1181 1181 9181 9181
+1183 1183 9183 9183
+1185 1185 9185 9185
+1187 1187 9187 9187
+1189 1189 9189 9189
+1191 1191 9191 9191
+1193 1193 9193 9193
+1195 1195 9195 9195
+1197 1197 9197 9197
+1199 1199 9199 9199
+1201 1201 9201 9201
+1203 1203 9203 9203
+1205 1205 9205 9205
+1207 1207 9207 9207
+1209 1209 9209 9209
+1211 1211 9211 9211
+1213 1213 9213 9213
+1215 1215 9215 9215
+1217 1217 9217 9217
+1219 1219 9219 9219
+1221 1221 9221 9221
+1223 1223 9223 9223
+1225 1225 9225 9225
+1227 1227 9227 9227
+1229 1229 9229 9229
+1231 1231 9231 9231
+1233 1233 9233 9233
+1235 1235 9235 9235
+1237 1237 9237 9237
+1239 1239 9239 9239
+1241 1241 9241 9241
+1243 1243 9243 9243
+1245 1245 9245 9245
+1247 1247 9247 9247
+1249 1249 9249 9249
+1251 1251 9251 9251
+1253 1253 9253 9253
+1255 1255 9255 9255
+1257 1257 9257 9257
+1259 1259 9259 9259
+1261 1261 9261 9261
+1263 1263 9263 9263
+1265 1265 9265 9265
+1267 1267 9267 9267
+1269 1269 9269 9269
+1271 1271 9271 9271
+1273 1273 9273 9273
+1275 1275 9275 9275
+1277 1277 9277 9277
+1279 1279 9279 9279
+1281 1281 9281 9281
+1283 1283 9283 9283
+1285 1285 9285 9285
+1287 1287 9287 9287
+1289 1289 9289 9289
+1291 1291 9291 9291
+1293 1293 9293 9293
+1295 1295 9295 9295
+1297 1297 9297 9297
+1299 1299 9299 9299
+1301 1301 9301 9301
+1303 1303 9303 9303
+1305 1305 9305 9305
+1307 1307 9307 9307
+1309 1309 9309 9309
+1311 1311 9311 9311
+1313 1313 9313 9313
+1315 1315 9315 9315
+1317 1317 9317 9317
+1319 1319 9319 9319
+1321 1321 9321 9321
+1323 1323 9323 9323
+1325 1325 9325 9325
+1327 1327 9327 9327
+1329 1329 9329 9329
+1331 1331 9331 9331
+1333 1333 9333 9333
+1335 1335 9335 9335
+1337 1337 9337 9337
+1339 1339 9339 9339
+1341 1341 9341 9341
+1343 1343 9343 9343
+1345 1345 9345 9345
+1347 1347 9347 9347
+1349 1349 9349 9349
+1351 1351 9351 9351
+1353 1353 9353 9353
+1355 1355 9355 9355
+1357 1357 9357 9357
+1359 1359 9359 9359
+1361 1361 9361 9361
+1363 1363 9363 9363
+1365 1365 9365 9365
+1367 1367 9367 9367
+1369 1369 9369 9369
+1371 1371 9371 9371
+1373 1373 9373 9373
+1375 1375 9375 9375
+1377 1377 9377 9377
+1379 1379 9379 9379
+1381 1381 9381 9381
+1383 1383 9383 9383
+1385 1385 9385 9385
+1387 1387 9387 9387
+1389 1389 9389 9389
+1391 1391 9391 9391
+1393 1393 9393 9393
+1395 1395 9395 9395
+1397 1397 9397 9397
+1399 1399 9399 9399
+1401 1401 9401 9401
+1403 1403 9403 9403
+1405 1405 9405 9405
+1407 1407 9407 9407
+1409 1409 9409 9409
+1411 1411 9411 9411
+1413 1413 9413 9413
+1415 1415 9415 9415
+1417 1417 9417 9417
+1419 1419 9419 9419
+1421 1421 9421 9421
+1423 1423 9423 9423
+1425 1425 9425 9425
+1427 1427 9427 9427
+1429 1429 9429 9429
+1431 1431 9431 9431
+1433 1433 9433 9433
+1435 1435 9435 9435
+1437 1437 9437 9437
+1439 1439 9439 9439
+1441 1441 9441 9441
+1443 1443 9443 9443
+1445 1445 9445 9445
+1447 1447 9447 9447
+1449 1449 9449 9449
+1451 1451 9451 9451
+1453 1453 9453 9453
+1455 1455 9455 9455
+1457 1457 9457 9457
+1459 1459 9459 9459
+1461 1461 9461 9461
+1463 1463 9463 9463
+1465 1465 9465 9465
+1467 1467 9467 9467
+1469 1469 9469 9469
+1471 1471 9471 9471
+1473 1473 9473 9473
+1475 1475 9475 9475
+1477 1477 9477 9477
+1479 1479 9479 9479
+1481 1481 9481 9481
+1483 1483 9483 9483
+1485 1485 9485 9485
+1487 1487 9487 9487
+1489 1489 9489 9489
+1491 1491 9491 9491
+1493 1493 9493 9493
+1495 1495 9495 9495
+1497 1497 9497 9497
+1499 1499 9499 9499
+1501 1501 9501 9501
+1503 1503 9503 9503
+1505 1505 9505 9505
+1507 1507 9507 9507
+1509 1509 9509 9509
+1511 1511 9511 9511
+1513 1513 9513 9513
+1515 1515 9515 9515
+1517 1517 9517 9517
+1519 1519 9519 9519
+1521 1521 9521 9521
+1523 1523 9523 9523
+1525 1525 9525 9525
+1527 1527 9527 9527
+1529 1529 9529 9529
+1531 1531 9531 9531
+1533 1533 9533 9533
+1535 1535 9535 9535
+1537 1537 9537 9537
+1539 1539 9539 9539
+1541 1541 9541 9541
+1543 1543 9543 9543
+1545 1545 9545 9545
+1547 1547 9547 9547
+1549 1549 9549 9549
+1551 1551 9551 9551
+1553 1553 9553 9553
+1555 1555 9555 9555
+1557 1557 9557 9557
+1559 1559 9559 9559
+1561 1561 9561 9561
+1563 1563 9563 9563
+1565 1565 9565 9565
+1567 1567 9567 9567
+1569 1569 9569 9569
+1571 1571 9571 9571
+1573 1573 9573 9573
+1575 1575 9575 9575
+1577 1577 9577 9577
+1579 1579 9579 9579
+1581 1581 9581 9581
+1583 1583 9583 9583
+1585 1585 9585 9585
+1587 1587 9587 9587
+1589 1589 9589 9589
+1591 1591 9591 9591
+1593 1593 9593 9593
+1595 1595 9595 9595
+1597 1597 9597 9597
+1599 1599 9599 9599
+1601 1601 9601 9601
+1603 1603 9603 9603
+1605 1605 9605 9605
+1607 1607 9607 9607
+1609 1609 9609 9609
+1611 1611 9611 9611
+1613 1613 9613 9613
+1615 1615 9615 9615
+1617 1617 9617 9617
+1619 1619 9619 9619
+1621 1621 9621 9621
+1623 1623 9623 9623
+1625 1625 9625 9625
+1627 1627 9627 9627
+1629 1629 9629 9629
+1631 1631 9631 9631
+1633 1633 9633 9633
+1635 1635 9635 9635
+1637 1637 9637 9637
+1639 1639 9639 9639
+1641 1641 9641 9641
+1643 1643 9643 9643
+1645 1645 9645 9645
+1647 1647 9647 9647
+1649 1649 9649 9649
+1651 1651 9651 9651
+1653 1653 9653 9653
+1655 1655 9655 9655
+1657 1657 9657 9657
+1659 1659 9659 9659
+1661 1661 9661 9661
+1663 1663 9663 9663
+1665 1665 9665 9665
+1667 1667 9667 9667
+1669 1669 9669 9669
+1671 1671 9671 9671
+1673 1673 9673 9673
+1675 1675 9675 9675
+1677 1677 9677 9677
+1679 1679 9679 9679
+1681 1681 9681 9681
+1683 1683 9683 9683
+1685 1685 9685 9685
+1687 1687 9687 9687
+1689 1689 9689 9689
+1691 1691 9691 9691
+1693 1693 9693 9693
+1695 1695 9695 9695
+1697 1697 9697 9697
+1699 1699 9699 9699
+1701 1701 9701 9701
+1703 1703 9703 9703
+1705 1705 9705 9705
+1707 1707 9707 9707
+1709 1709 9709 9709
+1711 1711 9711 9711
+1713 1713 9713 9713
+1715 1715 9715 9715
+1717 1717 9717 9717
+1719 1719 9719 9719
+1721 1721 9721 9721
+1723 1723 9723 9723
+1725 1725 9725 9725
+1727 1727 9727 9727
+1729 1729 9729 9729
+1731 1731 9731 9731
+1733 1733 9733 9733
+1735 1735 9735 9735
+1737 1737 9737 9737
+1739 1739 9739 9739
+1741 1741 9741 9741
+1743 1743 9743 9743
+1745 1745 9745 9745
+1747 1747 9747 9747
+1749 1749 9749 9749
+1751 1751 9751 9751
+1753 1753 9753 9753
+1755 1755 9755 9755
+1757 1757 9757 9757
+1759 1759 9759 9759
+1761 1761 9761 9761
+1763 1763 9763 9763
+1765 1765 9765 9765
+1767 1767 9767 9767
+1769 1769 9769 9769
+1771 1771 9771 9771
+1773 1773 9773 9773
+1775 1775 9775 9775
+1777 1777 9777 9777
+1779 1779 9779 9779
+1781 1781 9781 9781
+1783 1783 9783 9783
+1785 1785 9785 9785
+1787 1787 9787 9787
+1789 1789 9789 9789
+1791 1791 9791 9791
+1793 1793 9793 9793
+1795 1795 9795 9795
+1797 1797 9797 9797
+1799 1799 9799 9799
+1801 1801 9801 9801
+1803 1803 9803 9803
+1805 1805 9805 9805
+1807 1807 9807 9807
+1809 1809 9809 9809
+1811 1811 9811 9811
+1813 1813 9813 9813
+1815 1815 9815 9815
+1817 1817 9817 9817
+1819 1819 9819 9819
+1821 1821 9821 9821
+1823 1823 9823 9823
+1825 1825 9825 9825
+1827 1827 9827 9827
+1829 1829 9829 9829
+1831 1831 9831 9831
+1833 1833 9833 9833
+1835 1835 9835 9835
+1837 1837 9837 9837
+1839 1839 9839 9839
+1841 1841 9841 9841
+1843 1843 9843 9843
+1845 1845 9845 9845
+1847 1847 9847 9847
+1849 1849 9849 9849
+1851 1851 9851 9851
+1853 1853 9853 9853
+1855 1855 9855 9855
+1857 1857 9857 9857
+1859 1859 9859 9859
+1861 1861 9861 9861
+1863 1863 9863 9863
+1865 1865 9865 9865
+1867 1867 9867 9867
+1869 1869 9869 9869
+1871 1871 9871 9871
+1873 1873 9873 9873
+1875 1875 9875 9875
+1877 1877 9877 9877
+1879 1879 9879 9879
+1881 1881 9881 9881
+1883 1883 9883 9883
+1885 1885 9885 9885
+1887 1887 9887 9887
+1889 1889 9889 9889
+1891 1891 9891 9891
+1893 1893 9893 9893
+1895 1895 9895 9895
+1897 1897 9897 9897
+1899 1899 9899 9899
+1901 1901 9901 9901
+1903 1903 9903 9903
+1905 1905 9905 9905
+1907 1907 9907 9907
+1909 1909 9909 9909
+1911 1911 9911 9911
+1913 1913 9913 9913
+1915 1915 9915 9915
+1917 1917 9917 9917
+1919 1919 9919 9919
+1921 1921 9921 9921
+1923 1923 9923 9923
+1925 1925 9925 9925
+1927 1927 9927 9927
+1929 1929 9929 9929
+1931 1931 9931 9931
+1933 1933 9933 9933
+1935 1935 9935 9935
+1937 1937 9937 9937
+1939 1939 9939 9939
+1941 1941 9941 9941
+1943 1943 9943 9943
+1945 1945 9945 9945
+1947 1947 9947 9947
+1949 1949 9949 9949
+1951 1951 9951 9951
+1953 1953 9953 9953
+1955 1955 9955 9955
+1957 1957 9957 9957
+1959 1959 9959 9959
+1961 1961 9961 9961
+1963 1963 9963 9963
+1965 1965 9965 9965
+1967 1967 9967 9967
+1969 1969 9969 9969
+1971 1971 9971 9971
+1973 1973 9973 9973
+1975 1975 9975 9975
+1977 1977 9977 9977
+1979 1979 9979 9979
+1981 1981 9981 9981
+1983 1983 9983 9983
+1985 1985 9985 9985
+1987 1987 9987 9987
+1989 1989 9989 9989
+1991 1991 9991 9991
+1993 1993 9993 9993
+1995 1995 9995 9995
+1997 1997 9997 9997
+1999 1999 9999 9999
diff --git a/kattis-kth/javap-windows/src/main.rs b/kattis-kth/javap-windows/src/main.rs
new file mode 100644
index 0000000..f10ba56
--- /dev/null
+++ b/kattis-kth/javap-windows/src/main.rs
@@ -0,0 +1,119 @@
+// https://kth.kattis.com/problems/kth.javap.windows
+
+use std::{
+ io::{stdin, Read},
+ iter::repeat,
+};
+
+#[derive(Debug, Clone, Copy, PartialEq, Eq)]
+enum Tile {
+ Covered,
+ Empty,
+ Split(u32),
+}
+use Tile::*;
+
+trait Tiles {
+ fn fill(&mut self, i: u32, tile: Coord, coord: Coord);
+ fn count(&self, i: u32, tile: Coord) -> usize;
+}
+
+impl Tiles for Vec<Tile> {
+ fn fill(&mut self, i: u32, tile: Coord, coord: Coord) {
+ if self[i as usize] == Covered {
+ return;
+ }
+ if coord.x2 <= tile.x1 || coord.x1 >= tile.x2 || coord.y2 <= tile.y1 || coord.y1 >= tile.y2
+ {
+ return;
+ }
+ if coord.x1 <= tile.x1 && coord.x2 >= tile.x2 && coord.y1 <= tile.y1 && coord.y2 >= tile.y2
+ {
+ self[i as usize] = Covered;
+ return;
+ }
+ let c = match self[i as usize] {
+ Empty => {
+ let c = self.len() as u32;
+ self[i as usize] = Split(c);
+ self.extend(repeat(Empty).take(4));
+ c
+ }
+ Split(c) => c,
+ _ => unreachable!(),
+ };
+ for q in 0..4 {
+ self.fill(c + q, tile.quadrant(q), coord);
+ }
+ }
+
+ fn count(&self, i: u32, tile: Coord) -> usize {
+ match self[i as usize] {
+ Covered => (tile.x2 - tile.x1) as usize * (tile.y2 - tile.y1) as usize,
+ Empty => 0,
+ Split(c) => (0..4).map(|q| self.count(c + q, tile.quadrant(q))).sum(),
+ }
+ }
+}
+
+#[derive(Clone, Copy, PartialEq, Eq)]
+struct Coord {
+ x1: u16,
+ y1: u16,
+ x2: u16,
+ y2: u16,
+}
+
+impl Coord {
+ fn mid(&self) -> (u16, u16) {
+ (
+ self.x1 + (self.x2 - self.x1) / 2,
+ self.y1 + (self.y2 - self.y1) / 2,
+ )
+ }
+ fn quadrant(mut self, q: u32) -> Self {
+ let mid = self.mid();
+ let x = if q % 2 == 0 {
+ &mut self.x1
+ } else {
+ &mut self.x2
+ };
+ let y = if q < 2 { &mut self.y1 } else { &mut self.y2 };
+ *x = mid.0;
+ *y = mid.1;
+ self
+ }
+}
+
+fn main() {
+ let mut input = String::new();
+ stdin().lock().read_to_string(&mut input).unwrap();
+ let mut ints = input
+ .split(|c| c == ' ' || c == '\n')
+ .flat_map(|i| i.trim().parse::<u16>().ok());
+ let mut get = || ints.next().unwrap();
+
+ let mut tiles = Vec::with_capacity(33_000_000);
+ tiles.push(Empty);
+
+ let screen = Coord {
+ x1: 0,
+ y1: 0,
+ x2: 10001,
+ y2: 10001,
+ };
+
+ let n = get();
+ for _ in 0..n {
+ let coord = Coord {
+ x1: get(),
+ y1: get(),
+ x2: get(),
+ y2: get(),
+ };
+
+ tiles.fill(0, screen, coord);
+ }
+
+ println!("{}", tiles.count(0, screen));
+}