문제 링크 https://www.acmicpc.net/problem/2545
처음에는 간단하게 a,b,c 중에 가장 큰 수를 D만큼 for문을 돌리면 -1씩해주는 방식으로 풀었는데 시간초과로 인해 다른 방법으로 접근했습니다.
위에 생각한 식으로 진행했을때 a와 b와 c의 길이는 점점 같아 진다는 생각으로 접근했습니다.
t = int(input())
result = []
for _ in range(t):
input()
a, b, c, d = map(int, input().split())
a, b, c = sorted((a, b, c))
s = a + b + c - d
tmp = min(s // 3, a)
a1 = tmp
s -= tmp
tmp = min(s // 2, b)
print(a1*tmp*(s-tmp))