提出 #49183034


ソースコード 拡げる

Copy
program main
implicit none
integer(8) N, K, ok, ng, ref, cnt, ok_cnt, ng_cnt, ref_cnt, i
integer(8), allocatable:: A(:), B(:)
read*, N, K
allocate(A(N))
allocate(B(N))
read*, A, B
call heapsort(N, A)
call heapsort(N, B)
ng = 0
ok = maxval(A) * maxval(B) + 1
do while (abs(ng - ok) > 1)
ref = (ng + ok) / 2
!ref
cnt = 0
do i = 1, N
ok_cnt = 0
ng_cnt = N + 1
do while (ng_cnt - ok_cnt > 1)
ref_cnt = (ok_cnt + ng_cnt) / 2
 
הההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההה
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
program main
    implicit none
    integer(8) N, K, ok, ng, ref, cnt, ok_cnt, ng_cnt, ref_cnt, i
    integer(8), allocatable:: A(:), B(:)
    read*, N, K
    allocate(A(N))
    allocate(B(N))
    read*, A, B
    call heapsort(N, A)
    call heapsort(N, B)
    ng = 0
    ok = maxval(A) * maxval(B) + 1
    do while (abs(ng - ok) > 1)
        ref = (ng + ok) / 2
        !積がref以下になるものが何個あるか数える
        cnt = 0
        do i = 1, N
            ok_cnt = 0
            ng_cnt = N + 1
            do while (ng_cnt - ok_cnt > 1)
                ref_cnt = (ok_cnt + ng_cnt) / 2
                if (A(i) * B(ref_cnt) <= ref) then
                    ok_cnt = ref_cnt
                else
                    ng_cnt = ref_cnt
                end if
            end do
            cnt = cnt + ok_cnt
        end do

        if (cnt >= K) then
            ok = ref
        else
            ng = ref
        end if
    end do
    print'(i0)', ok
end program main

subroutine heapsort(n,array)
    implicit none
    integer(8),intent(in) :: n
    integer(8),intent(inout) :: array(1:n)

    integer(8) ::i,k,j,l
    integer(8) :: t

    if(n.eq.1)return

    l=n/2+1
    k=n
    do while(k.ne.1)
       if(l.gt.1)then
          l=l-1
          t=array(L)
       else
          t=array(k)
          array(k)=array(1)
          k=k-1
          if(k.eq.1) then
             array(1)=t
             exit
          endif
       endif
       i=l
       j=l+l
       do while(j.le.k)
          if(j.lt.k)then
             if(array(j).lt.array(j+1))j=j+1
          endif
          if (t.lt.array(j))then
             array(i)=array(j)
             i=j
             j=j+j
          else
             j=k+1
          endif
       enddo
       array(i)=t
    enddo

    return
end subroutine heapsort

提出情報

提出日時
問題 C - 億マス計算
ユーザ jj1guj
言語 Fortran (gfortran 12.2)
得点 100
コード長 1893 Byte
結果 AC
実行時間 98 ms
メモリ 3516 KB

ジャッジ結果

セット名 Sample Subtask1 Subtask2
得点 / 配点 0 / 0 5 / 5 95 / 95
結果
AC × 3
AC × 18
AC × 48
セット名 テストケース
Sample subtask0_sample_01.txt, subtask0_sample_02.txt, subtask0_sample_03.txt
Subtask1 subtask0_sample_01.txt, subtask0_sample_02.txt, subtask0_sample_03.txt, subtask1_01.txt, subtask1_02.txt, subtask1_03.txt, subtask1_04.txt, subtask1_05.txt, subtask1_06.txt, subtask1_07.txt, subtask1_08.txt, subtask1_09.txt, subtask1_10.txt, subtask1_11.txt, subtask1_12.txt, subtask1_13.txt, subtask1_14.txt, subtask1_15.txt
Subtask2 subtask0_sample_01.txt, subtask0_sample_02.txt, subtask0_sample_03.txt, subtask1_01.txt, subtask1_02.txt, subtask1_03.txt, subtask1_04.txt, subtask1_05.txt, subtask1_06.txt, subtask1_07.txt, subtask1_08.txt, subtask1_09.txt, subtask1_10.txt, subtask1_11.txt, subtask1_12.txt, subtask1_13.txt, subtask1_14.txt, subtask1_15.txt, subtask2_16.txt, subtask2_17.txt, subtask2_18.txt, subtask2_19.txt, subtask2_20.txt, subtask2_21.txt, subtask2_22.txt, subtask2_23.txt, subtask2_24.txt, subtask2_25.txt, subtask2_26.txt, subtask2_27.txt, subtask2_28.txt, subtask2_29.txt, subtask2_30.txt, subtask2_31.txt, subtask2_32.txt, subtask2_33.txt, subtask2_34.txt, subtask2_35.txt, subtask2_36.txt, subtask2_37.txt, subtask2_38.txt, subtask2_39.txt, subtask2_40.txt, subtask2_41.txt, subtask2_42.txt, subtask2_43.txt, subtask2_44.txt, subtask2_45.txt
ケース名 結果 実行時間 メモリ
subtask0_sample_01.txt AC 5 ms 2716 KB
subtask0_sample_02.txt AC 1 ms 2580 KB
subtask0_sample_03.txt AC 1 ms 2636 KB
subtask1_01.txt AC 1 ms 2500 KB
subtask1_02.txt AC 1 ms 2720 KB
subtask1_03.txt AC 1 ms 2504 KB
subtask1_04.txt AC 1 ms 2580 KB
subtask1_05.txt AC 1 ms 2512 KB
subtask1_06.txt AC 1 ms 2632 KB
subtask1_07.txt AC 1 ms 2504 KB
subtask1_08.txt AC 1 ms 2508 KB
subtask1_09.txt AC 1 ms 2648 KB
subtask1_10.txt AC 1 ms 2556 KB
subtask1_11.txt AC 1 ms 2512 KB
subtask1_12.txt AC 1 ms 2640 KB
subtask1_13.txt AC 1 ms 2564 KB
subtask1_14.txt AC 1 ms 2732 KB
subtask1_15.txt AC 1 ms 2588 KB
subtask2_16.txt AC 33 ms 2820 KB
subtask2_17.txt AC 29 ms 2996 KB
subtask2_18.txt AC 17 ms 2824 KB
subtask2_19.txt AC 12 ms 2624 KB
subtask2_20.txt AC 83 ms 2984 KB
subtask2_21.txt AC 70 ms 3224 KB
subtask2_22.txt AC 65 ms 3232 KB
subtask2_23.txt AC 45 ms 3240 KB
subtask2_24.txt AC 95 ms 3180 KB
subtask2_25.txt AC 98 ms 3184 KB
subtask2_26.txt AC 97 ms 3404 KB
subtask2_27.txt AC 98 ms 3252 KB
subtask2_28.txt AC 88 ms 3460 KB
subtask2_29.txt AC 98 ms 3408 KB
subtask2_30.txt AC 95 ms 3308 KB
subtask2_31.txt AC 83 ms 3364 KB
subtask2_32.txt AC 3 ms 2640 KB
subtask2_33.txt AC 18 ms 2808 KB
subtask2_34.txt AC 51 ms 3260 KB
subtask2_35.txt AC 52 ms 3080 KB
subtask2_36.txt AC 28 ms 2756 KB
subtask2_37.txt AC 19 ms 2840 KB
subtask2_38.txt AC 12 ms 2668 KB
subtask2_39.txt AC 93 ms 3404 KB
subtask2_40.txt AC 86 ms 3324 KB
subtask2_41.txt AC 81 ms 3516 KB
subtask2_42.txt AC 33 ms 2896 KB
subtask2_43.txt AC 92 ms 3460 KB
subtask2_44.txt AC 94 ms 3404 KB
subtask2_45.txt AC 87 ms 3488 KB


2025-04-13 (日)
14:45:26 +00:00