Submission #10928876


Source Code Expand

Copy
import math
import sys
import bisect
stdin = sys.stdin
def bisectf_left(f,val,start,end):
fs = f(start)
if val <= fs:
return start
fe = f(end-1)
if fe < val:
return end
# Now fs < val and val <= fe
while True:
if (end - start) <= 2:
return end - 1
mid = (start + end )// 2
fm = f(mid)
if val <= fm :
end = mid + 1
 
הההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההה
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
import math
import sys
import bisect
stdin = sys.stdin

def bisectf_left(f,val,start,end):
    fs = f(start)
    if val <= fs:
        return start
    fe = f(end-1)
    if fe < val:
        return end    
    # Now fs < val and val <= fe

    while True:
        if (end - start) <= 2:
            return end - 1
        mid = (start + end )// 2 
        fm = f(mid)
        if val <= fm :
            end = mid + 1
        else: 
            start = mid
        continue

def bisectf_right(f,val,start,end):
    fs = f(start)
    if val < fs:
        return start
    fe = f(end-1)
    if fe <= val:
        return end
    # Now fs <= val and val < fe 
    while True:
        # print(start,end)
        if (end - start) <= 2:
            return end - 1
        mid = (start + end )// 2 
        fm = f(mid)
        if fm > val:
            end = mid + 1
        else:
            start = mid
        continue

def bisectf_bool(f,start,end):
    fs = f(start)
    if fs == True:
        return start
    fe = f(end-1)
    if fe == False:
        return end
    # Now fs == False and  fe == True 
    while True:
        # print(start,end)
        if (end - start) <= 2:
            return end - 1
        mid = (start + end )// 2 
        fm = f(mid)
        if fm == True:
            end = mid + 1
        else:    
            start = mid
        continue



ns = lambda: stdin.readline().rstrip()
ni = lambda: int(stdin.readline().rstrip())
nm = lambda: map(int, stdin.readline().split())
nl = lambda: list(map(int, stdin.readline().split()))
mod = 10**9 + 7 
sys.setrecursionlimit(1000010)

N,K = nm()
A  = nl()
A.sort()
# print(N,K,A)

zeroleft=bisect.bisect_left(A,0)
zeroright=bisect.bisect_right(A,0)
( nminus,nzero,nplus ) = (zeroleft,zeroright-zeroleft,len(A)-zeroright)
# print(nminus,nzero,nplus)

cminus = nminus * nplus
czero = nzero * (nminus + nplus ) + nzero * (nzero-1) // 2 
cplus = (nplus * (nplus - 1) + nminus * (nminus -1 ))//2

if K <= cminus:
    group = "minus"
    k = K
elif K <= czero + cminus:
    print(0)
    exit(0)
else:
    group = "plus"
    k = K - (czero + cminus)

def is_number_of_multiple_LE_Z_is_ME_K(z,k):
    if z == -1:
        return (True if cminus >= k else False)
    elif z == 0 :
        return (True if cminus + czero >= k else False)
    if z > 0:
        count = cminus + czero
        if count >=k:
            return True
        for i in range(zeroright+1,N):
            x = A[i]
            limit = z // x
            j = max(min(bisect.bisect_right(A,limit,zeroright),i),zeroright)
            count += (j - zeroright)
            # print("A",i,k,"limit=",limit,j,zeroright,j-zeroright)
            if count >=k: 
                return True
        for i in range(1,zeroleft):
            x = A[i]
            limit = - (-z // x )
            j = min(bisect.bisect_left(A,limit,0,i),i)
            count += (i-j)
            if count >= k:
                return True
        # return False
    else: # z is negavite and smaller than -1
        count = 0
        for i in range(zeroright,N):
            x = A[i]
            limit = z // x
            j = min(bisect.bisect_right(A,limit,0,zeroleft),zeroleft)
            count += j
            if count >=k: 
                return True
    return False

#for i in range(0,17):
#    for j in range(-7,5):
#        print(i,j,is_number_of_multiple_LE_K_is_ME_Z(j,i))  
        
if nminus == 0: 
    nmax = A[N-2]* A[N-1]
    nmin = A[0] * A[1]
elif nplus == 0:
    nmin = A[N-2]* A[N-1]
    nmax = A[0] * A[1]
else:
    nmax = max(A[N-2]* A[N-1],A[0] * A[1])
    nmin = A[0]* A[N-1]
        
def F(x):
    global K
    # print("K=",K)
    return is_number_of_multiple_LE_Z_is_ME_K(x,K)

# for i in range(-7,5):
#    print(i,F(i))

print(bisectf_bool(F,nmin,nmax + 1))

Submission Info

Submission Time
Task D - Pairs
User MyOden
Language PyPy3 (2.4.0)
Score 0
Code Size 3938 Byte
Status TLE
Exec Time 2108 ms
Memory 81248 KB

Judge Result

Set Name Sample Subtask1
Score / Max Score 0 / 0 0 / 400
Status
AC × 3
AC × 63
TLE × 16
Set Name Test Cases
Sample sample_01.txt, sample_02.txt, sample_03.txt
Subtask1 sample_01.txt, sample_02.txt, sample_03.txt, sub1_01.txt, sub1_02.txt, sub1_03.txt, sub1_04.txt, sub1_05.txt, sub1_06.txt, sub1_07.txt, sub1_08.txt, sub1_09.txt, sub1_10.txt, sub1_11.txt, sub1_12.txt, sub1_13.txt, sub1_14.txt, sub1_15.txt, sub1_16.txt, sub1_17.txt, sub1_18.txt, sub1_19.txt, sub1_20.txt, sub1_21.txt, sub1_22.txt, sub1_23.txt, sub1_24.txt, sub1_25.txt, sub1_26.txt, sub1_27.txt, sub1_28.txt, sub1_29.txt, sub1_30.txt, sub1_31.txt, sub1_32.txt, sub1_33.txt, sub1_small_01.txt, sub1_small_02.txt, sub1_small_03.txt, sub1_small_04.txt, sub1_small_05.txt, sub1_small_06.txt, sub1_small_07.txt, sub1_small_08.txt, sub1_small_09.txt, sub1_small_10.txt, sub1_small_11.txt, sub1_small_12.txt, sub1_small_13.txt, sub1_small_14.txt, sub1_small_15.txt, sub1_small_16.txt, sub1_small_17.txt, sub1_small_18.txt, sub1_small_19.txt, sub1_small_20.txt, sub1_small_21.txt, sub1_small_22.txt, sub1_small_23.txt, sub1_small_24.txt, sub1_small_25.txt, sub1_small_26.txt, sub1_small_27.txt, sub1_small_28.txt, sub1_small_29.txt, sub1_small_30.txt, sub1_small_31.txt, sub1_small_32.txt, sub1_small_33.txt, sub1_small_34.txt, sub1_small_35.txt, sub1_small_36.txt, sub1_small_37.txt, sub1_small_38.txt, sub1_small_39.txt, sub1_small_40.txt, sub1_small_41.txt, sub1_small_42.txt, sub1_small_43.txt
Case Name Status Exec Time Memory
sample_01.txt AC 163 ms 38384 KB
sample_02.txt AC 173 ms 38256 KB
sample_03.txt AC 185 ms 39024 KB
sub1_01.txt AC 234 ms 54128 KB
sub1_02.txt TLE 2108 ms 68320 KB
sub1_03.txt TLE 2108 ms 80084 KB
sub1_04.txt TLE 2107 ms 63648 KB
sub1_05.txt AC 1064 ms 54664 KB
sub1_06.txt AC 443 ms 43824 KB
sub1_07.txt AC 1853 ms 69124 KB
sub1_08.txt TLE 2106 ms 73968 KB
sub1_09.txt AC 1867 ms 66348 KB
sub1_10.txt AC 937 ms 46880 KB
sub1_11.txt TLE 2107 ms 73968 KB
sub1_12.txt AC 659 ms 45648 KB
sub1_13.txt TLE 2106 ms 68520 KB
sub1_14.txt AC 893 ms 50340 KB
sub1_15.txt AC 180 ms 41968 KB
sub1_16.txt AC 268 ms 73712 KB
sub1_17.txt AC 1084 ms 57584 KB
sub1_18.txt AC 197 ms 40148 KB
sub1_19.txt TLE 2108 ms 80084 KB
sub1_20.txt TLE 2107 ms 63520 KB
sub1_21.txt TLE 2108 ms 79056 KB
sub1_22.txt AC 1891 ms 56432 KB
sub1_23.txt TLE 2106 ms 59376 KB
sub1_24.txt AC 1881 ms 51180 KB
sub1_25.txt AC 1191 ms 46252 KB
sub1_26.txt TLE 2106 ms 67640 KB
sub1_27.txt AC 207 ms 57808 KB
sub1_28.txt TLE 2107 ms 81248 KB
sub1_29.txt AC 301 ms 79700 KB
sub1_30.txt TLE 2108 ms 79828 KB
sub1_31.txt TLE 2108 ms 79696 KB
sub1_32.txt TLE 2108 ms 79828 KB
sub1_33.txt TLE 2107 ms 79920 KB
sub1_small_01.txt AC 244 ms 43868 KB
sub1_small_02.txt AC 212 ms 43100 KB
sub1_small_03.txt AC 163 ms 38640 KB
sub1_small_04.txt AC 186 ms 39920 KB
sub1_small_05.txt AC 162 ms 38256 KB
sub1_small_06.txt AC 256 ms 43996 KB
sub1_small_07.txt AC 176 ms 38256 KB
sub1_small_08.txt AC 238 ms 42844 KB
sub1_small_09.txt AC 184 ms 39408 KB
sub1_small_10.txt AC 237 ms 42716 KB
sub1_small_11.txt AC 209 ms 41324 KB
sub1_small_12.txt AC 207 ms 41308 KB
sub1_small_13.txt AC 184 ms 41068 KB
sub1_small_14.txt AC 192 ms 41068 KB
sub1_small_15.txt AC 198 ms 42092 KB
sub1_small_16.txt AC 261 ms 45404 KB
sub1_small_17.txt AC 228 ms 42972 KB
sub1_small_18.txt AC 223 ms 42972 KB
sub1_small_19.txt AC 171 ms 39024 KB
sub1_small_20.txt AC 214 ms 41308 KB
sub1_small_21.txt AC 178 ms 38640 KB
sub1_small_22.txt AC 175 ms 38640 KB
sub1_small_23.txt AC 163 ms 38256 KB
sub1_small_24.txt AC 166 ms 38256 KB
sub1_small_25.txt AC 210 ms 42972 KB
sub1_small_26.txt AC 207 ms 42460 KB
sub1_small_27.txt AC 181 ms 38512 KB
sub1_small_28.txt AC 179 ms 38512 KB
sub1_small_29.txt AC 247 ms 43996 KB
sub1_small_30.txt AC 202 ms 42092 KB
sub1_small_31.txt AC 231 ms 41564 KB
sub1_small_32.txt AC 223 ms 41820 KB
sub1_small_33.txt AC 178 ms 38640 KB
sub1_small_34.txt AC 166 ms 38640 KB
sub1_small_35.txt AC 214 ms 41180 KB
sub1_small_36.txt AC 165 ms 38256 KB
sub1_small_37.txt AC 201 ms 41436 KB
sub1_small_38.txt AC 206 ms 41580 KB
sub1_small_39.txt AC 234 ms 43372 KB
sub1_small_40.txt AC 208 ms 41436 KB
sub1_small_41.txt AC 175 ms 38256 KB
sub1_small_42.txt AC 174 ms 38256 KB
sub1_small_43.txt AC 177 ms 38512 KB


2025-04-06 (Sun)
00:47:14 +00:00