diff options
author | mathiasmagnusson <mathiasmagnussons@gmail.com> | 2022-12-09 18:00:41 +0100 |
---|---|---|
committer | mathiasmagnusson <mathiasmagnussons@gmail.com> | 2022-12-09 18:00:41 +0100 |
commit | a1eb38bebe6ce1668c3f96489506c3b05b9fe5cb (patch) | |
tree | cccf0fd4763dba123efab7c896292dc18d1eb458 /kattis-kth/javap-windows | |
parent | e41e6c8bc72e3300a0fa137f198454341bc315b1 (diff) | |
download | programming-problem-solving-a1eb38bebe6ce1668c3f96489506c3b05b9fe5cb.tar.gz |
Move stuff around
Diffstat (limited to 'kattis-kth/javap-windows')
-rw-r--r-- | kattis-kth/javap-windows/Cargo.lock | 7 | ||||
-rw-r--r-- | kattis-kth/javap-windows/Cargo.toml | 8 | ||||
-rw-r--r-- | kattis-kth/javap-windows/input | 1001 | ||||
-rw-r--r-- | kattis-kth/javap-windows/src/main.rs | 119 |
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)); +} |