๋ฌธ์
https://www.acmicpc.net/problem/9024
๋ฌธ์ ํ์ด
num ๋ฐฐ์ด์ ์ ๋ ฌํ๊ณ k๊ฐ ๋ณด๋ค ํฐ์ง ์๋์ง ๋น๊ตํด๊ฐ๋ฉด์ ์ด๋ถํ์์ ์งํํ๋ค.
๊ทธ ๊ฐ์ด k๋ณด๋ค ํฌ๋ฉด mid-1 ๊ฐ์ r๋ก ์ค์ ํด์ฃผ๊ณ
์์ผ๋ฉด min+1 ๊ฐ์ l๋ก ์ค์ ํด์ค๋ค.
k์ ๋ ์์ ํฉ์ ์ฐจ์ด๊ฐ mini ๊ฐ๋ณด๋ค ์์ผ๋ฉด mini ๊ฐ์ ์๋ฐ์ดํธ ํด์ฃผ๊ณ cnt=1๋ก ์ด๊ธฐํํ๋ค.
mini ๊ฐ๊ณผ ๊ฐ์ผ๋ฉด cnt+=1์ ํด์ค๋ค.
์ฝ๋
import sys
input=sys.stdin.readline
t=int(input())
for i in range(t):
n,k=map(int,input().split())
num=list(map(int,input().split()))
num.sort()
mini=200000000
for j in range(n):
l=j+1
r= n-1
while(l<=r):
mid=(l+r)//2
s=num[j]+num[mid]
if(s>k):
r=mid-1
else:
l=mid+1
if(abs(k-s)<mini):
cnt=1
mini=abs(k-s)
elif(abs(k-s)==mini):
cnt+=1
print(cnt)
'๐ป ์๊ณ ๋ฆฌ์ฆ > PS' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[๋ฐฑ์ค/BOJ] 1449 ์๋ฆฌ๊ณต ํญ์น - ํ์ด์ฌ (0) | 2022.05.08 |
---|---|
[2017 ์นด์นด์ค์ฝ๋ ์์ ] ์ปฌ๋ฌ๋ง๋ถ - ํ์ด์ฌ (0) | 2022.03.16 |
[BOJ/๋ฐฑ์ค] 20041 Escaping - ์๋ฐ,ํ์ด์ฌ (2) | 2021.10.08 |
[BOJ/๋ฐฑ์ค] 20047 ๋์ ์ฎ๊ธฐ๊ธฐ - ์๋ฐ (0) | 2021.10.05 |
[BOJ/๋ฐฑ์ค] 19538 ๋ฃจ๋จธ - ํ์ด์ฌ (0) | 2021.09.17 |