N = int(input())

arr = list(map(int,input().split()))

arr.sort()
min_value = 0
if len(arr)%2:
    min_value = arr.pop()
    lens = len(arr)//2
    for _ in range(lens):
        t = arr.pop() + arr.pop(0)
        min_value = max(min_value,t)
else:
    lens = len(arr)//2
    for _ in range(lens):
        t = arr.pop() + arr.pop(0)
        min_value = max(min_value,t)
print(min_value)
N,K = map(int,input().split())
arr = list(map(int,input().split()))
arr.sort()
diff = [0]*N
for i in range(N-1):
    diff[i] = arr[i+1] - arr[i]

diff.sort()
print(sum(diff[:len(diff)-(K-1)]))

'알고리즘 > 백준_복기_미완료' 카테고리의 다른 글

[BOJ/백준] 13334 철로  (0) 2021.05.05
[BOJ/백준] 13302 리조트  (0) 2021.05.05
[BOJ/백준] 2982 국왕의 방문  (0) 2021.05.05
[BOJ/백준] 12978 스크루지 민호 2  (0) 2021.05.04
[BOJ/백준] 12933 오리  (0) 2021.05.04
T = int(input())

for _ in range(T):
    day = int(input())

    arr = list(map(int,input().split()))
    answer = 0
    ind = day-1
    max_value = -1
    max_list = []
    while ind >=0:
        if arr[ind] > max_value:
            answer = answer - sum(max_list) + len(max_list)*max_value
            max_list = []
            max_value = arr[ind]
        else:
            max_list.append(arr[ind])

        ind -= 1
    if max_list:
        answer = answer - sum(max_list) + len(max_list)*max_value
    print(answer)

 

 

import sys
input = sys.stdin.readline
T = int(input())

for _ in range(T):
    N = int(input())
    arr = list(map(int,input().split()))
    max_value = arr[-1]
    answer = 0
    for ind in range(N-2,-1,-1):
        if arr[ind] > max_value:
            max_value = arr[ind]
        else:
            answer = answer + max_value - arr[ind]
    print(answer)

 

def founded(cnt):
    global result
    if cnt == 15:
        if sum(list(map(sum,win_draw_defeat))) == 0:
            result = 1
            return
    else:
        origin_number = origin_team[cnt]
        next_number = next_team[cnt]
        for idx in range(3):
            origin_team_score = idx
            next_team_score = 2-idx
            if win_draw_defeat[origin_number][origin_team_score] > 0 and win_draw_defeat[next_number][next_team_score]:
                win_draw_defeat[origin_number][origin_team_score] -= 1
                win_draw_defeat[next_number][next_team_score] -= 1
                founded(cnt+1)
                win_draw_defeat[origin_number][origin_team_score] += 1
                win_draw_defeat[next_number][next_team_score] += 1


from collections import deque
origin_team = [0,0,0,0,0,1,1,1,1,2,2,2,3,3,4]
next_team = [1,2,3,4,5,2,3,4,5,3,4,5,4,5,5]
answer = []
for _ in range(4):
    score = deque(map(int,input().split()))
    win_draw_defeat = []
    result = 0
    for _ in range(6):
        temp = []
        for _ in range(3):
            temp.append(score.popleft())
        win_draw_defeat.append(temp)
    founded(0)
    answer.append(result)
print(*answer)
N = int(input())
arr = [input() for _ in range(N)]

start = 0
end = N-1

result = []

while start <= end:
    if arr[start] < arr[end]:
        result.append(arr[start])
        start += 1
    elif arr[start] > arr[end]:
        result.append(arr[end])
        end -= 1
    else:
        next_start = start
        next_end = end
        flag = True
        while arr[next_end] == arr[next_start]:
            if next_end >0:
                next_end -= 1
            if next_start < N:
                next_start += 1
            if arr[next_start] < arr[next_end]:
                flag = True
            elif arr[next_start] > arr[next_end]:
                flag = False

        if flag:
            result.append(arr[start])
            start += 1
        else:
            result.append(arr[end])
            end -= 1




lens = len(result)

if lens <= 80:
    print(''.join(result))
else:
    for ind in range(lens//80+1):
        if ind == lens//80:
            print(''.join(result[ind*80:]))
        else:
            print(''.join(result[ind*80:(ind+1)*80]))

'알고리즘 > 백준_복기_미완료' 카테고리의 다른 글

[BOJ/백준] 6987 월드컵  (0) 2021.05.03
[BOJ/백준] 6236 용돈 관리  (0) 2021.05.03
[BOJ/백준] 6118 숨바꼭질  (0) 2021.05.03
[BOJ/백준] 5427 불  (0) 2021.05.03
[BOJ/백준] 4195 친구 네트워크  (0) 2021.05.03
N = int(input())
K = int(input())
arr = list(map(int,input().split()))
arr.sort()
diff = [0]*N
for i in range(N-1):
    diff[i] = arr[i+1] - arr[i]

diff.sort()
print(sum(diff[:len(diff)-(K-1)]))

 

'알고리즘 > 백준_복기_미완료' 카테고리의 다른 글

[BOJ/백준] 2458 키순서  (0) 2021.05.03
[BOJ/백준] 2436 공약수  (0) 2021.05.02
[BOJ/백준] 2156 포도주 시식  (0) 2021.05.02
[BOJ/백준] 2141 우체국  (0) 2021.05.02
[BOJ/백준] 2098 외판원 순회  (0) 2021.05.02
N = int(input())

arr = []
total_person = 0 
for _ in range(N):
    town,person = map(int,input().split())
    total_person += person
    arr.append([town,person])
arr.sort()
person_list = [k[1] for k in arr]
start = 0
ends = N -1
answer = float('inf')
while start <= ends:
    mid = (start+ends)//2
    left = sum(person_list[:mid+1])
    right = total_person - left
    if left >= right:
        answer = min(arr[mid][0],answer)
        ends = mid - 1
    else:
        start = mid + 1
print(answer)

 

 

import sys
input = sys.stdin.readline

N = int(input())
total_person = 0
arr = []
for _ in range(N):
    town,person = map(int,input().split())
    total_person += person
    arr.append([town,person])

arr.sort()
left_person = 0
ind = 0
while left_person < total_person/2:
    left_person += arr[ind][1]
    ind += 1
print(arr[ind-1][0])
from itertools import permutations
from collections import defaultdict

N = int(input())
alphabet = set()
total = defaultdict(int)
for _ in range(N):
    temp = list(input())
    alphabet.update(temp)
    temp.reverse()
    num = 1
    for k in temp:
        total[k] += num
        num*= 10

result = 0
alphabet = list(alphabet)

num_list = list(range(10-len(alphabet),10))
for new_nums in permutations(num_list):
    temp = 0
    ind = 0
    for key in total.keys():
        temp += total[key]*new_nums[ind]
        ind += 1
    result = max(result,temp)
        

print(result)

 

 

from itertools import permutations
from collections import defaultdict

N = int(input())
alphabet = set()
total = defaultdict(int)
for _ in range(N):
    temp = list(input())
    alphabet.update(temp)
    temp.reverse()
    num = 1
    for k in temp:
        total[k] += num
        num*= 10

result = 0
list_of_alpha =  list(total.values())
num = 9
list_of_alpha.sort(reverse=True)

for k in list_of_alpha:
    result = result + k*num
    num -= 1
print(result)

 

+ Recent posts