第K名的成績

發布時間: July 28, 2022, 11:37 a.m.   最後更新時間: July 28, 2022, 12:40 p.m.   時間限制: 4ms   記憶體限制: 128M

眾所皆知軟研37屆副社長是個只喜歡打音遊導致做事亂七八糟的程式廢物,有一次社長要依照$n$位社員的考試成績做排名並要給前$k$名的人發獎勵,要求副社長找到第$k$名的成績,他在找到第$k-1$名時想說,反正只要再找到下一個就可以了,先去打音遊在回來找也不會來不及,就打完再來找吧,但粗心的他忘記了第$k-1$名的成績了,又沒有幫這些成績做排序(因為他懶啊),大家都知道排序要O(nlogn),但副社長現在沒那麼多時間了,希望你可以找到比O(nlogn)快的方法來找到第k名的成績吧

給一整數$n$,$n \leq 10000$代表有幾位社員的成績
接著給$n$個整數代表每位社員的成績
最後給一整數$k$,$1 \leq k \leq n$代表副社長要找的成績是第幾名(第幾大)

給出一整數$m$代表第$k$名的成績

複製範例
5
4 2 9 7 6
2
7
複製範例
500
491 227 883 589 839 685 672 804 358 96 38 391 73 291 35 59 949 897 747 994 240 422 730 171 377 869 695 111 3 258 269 493 484 504 433 675 188 104 478 897 200 867 640 624 157 674 34 457 923 780 450 514 201 179 685 930 48 731 392 50 988 13 894 823 516 326 497 703 782 326 951 333 192 590 308 701 616 341 157 890 120 959 755 673 137 791 954 536 521 345 937 508 357 830 683 224 508 531 926 641 857 229 973 400 170 632 452 137 972 961 378 443 919 133 467 407 275 420 943 796 117 231 655 825 413 337 49 920 868 326 560 76 554 884 475 76 515 279 212 838 239 942 632 509 74 99 915 348 870 209 495 338 440 150 163 852 838 211 123 705 888 34 780 794 269 607 869 135 237 432 972 827 373 955 335 446 53 249 146 275 810 640 612 601 141 774 804 979 336 926 683 224 311 815 17 579 773 885 65 361 316 388 187 41 342 521 486 395 121 983 21 282 623 632 882 115 758 685 93 93 962 128 668 624 294 684 554 418 920 618 778 588 5 964 628 347 836 465 93 956 448 113 238 422 96 471 536 853 508 981 298 821 108 965 445 753 1 998 170 272 968 947 211 972 262 838 670 449 655 114 756 454 578 345 875 674 816 762 878 323 742 175 495 201 492 939 953 492 289 474 763 608 772 974 579 33 163 601 833 817 714 589 270 292 933 496 317 100 610 194 774 351 369 269 904 860 559 208 703 847 682 817 454 453 790 385 838 305 985 670 473 50 610 95 341 543 590 657 642 551 203 416 902 571 36 157 782 594 364 484 441 45 652 246 850 442 982 687 98 318 708 570 368 318 664 60 860 606 717 853 156 919 620 409 841 655 917 974 249 281 809 41 677 460 638 878 253 620 564 350 937 624 920 304 941 935 364 152 540 432 356 48 702 976 808 894 982 725 867 230 357 675 270 33 486 260 263 739 879 826 88 815 801 359 471 741 294 834 244 185 617 600 584 318 927 392 563 908 468 429 490 824 455 111 208 940 370 470 30 248 648 470 63 448 828 885 541 473 718 136 10 686 87 593 355 13 336 917 921 803 697 762 626 151 872 834 442 242 655 472 489 302 293 903 102 120 787 642 593 856 777 602 541 216 546 247 228 882 163 500
3
988

題目已經告訴你不要排序了,不要問說為啥排序完取第$n-k$個會TLE。

如果你寫完不是用排序找的方法還是有機會(非常小)TLE,那就多試幾次吧,不會每次運氣都是最差的(吧

還有如果不想用random每次都選第一個應該會過,除非我random出的測資太神


p.s.請不要把上述故事當真,沒有人會要副社長我做這種事,因為我真的做不好QQ

quick-select

Leet code