結果
問題 | No.966 引き算をして門松列(その1) |
ユーザー |
![]() |
提出日時 | 2025-03-31 17:44:05 |
言語 | PyPy3 (7.3.15) |
結果 |
AC
|
実行時間 | 110 ms / 2,000 ms |
コード長 | 2,071 bytes |
コンパイル時間 | 178 ms |
コンパイル使用メモリ | 82,092 KB |
実行使用メモリ | 80,168 KB |
最終ジャッジ日時 | 2025-03-31 17:45:06 |
合計ジャッジ時間 | 1,198 ms |
ジャッジサーバーID (参考情報) |
judge3 / judge1 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 2 |
other | AC * 5 |
ソースコード
def compute_case_a(A, B, C): a_prime = A c_prime = min(C, a_prime - 1) if c_prime < 1: return None b_prime = min(B, c_prime - 1) if b_prime < 1: return None if a_prime > c_prime and c_prime > b_prime: cost = (A - a_prime) + (C - c_prime) + (B - b_prime) return cost return None def compute_case_b(A, B, C): c_prime = C a_prime = min(A, c_prime - 1) if a_prime < 1: return None b_prime = min(B, a_prime - 1) if b_prime < 1: return None if c_prime > a_prime and a_prime > b_prime: cost = (A - a_prime) + (B - b_prime) + (C - c_prime) return cost return None def compute_case_c(A, B, C): b_prime = B a_prime = min(A, b_prime - 1) if a_prime < 1: return None c_prime = min(C, a_prime - 1) if c_prime < 1: return None if b_prime > a_prime and a_prime > c_prime: cost = (A - a_prime) + (B - b_prime) + (C - c_prime) return cost return None def compute_case_d(A, B, C): b_prime = B c_prime = min(C, b_prime - 1) if c_prime < 1: return None a_prime = min(A, c_prime - 1) if a_prime < 1: return None if b_prime > c_prime and c_prime > a_prime: cost = (A - a_prime) + (B - b_prime) + (C - c_prime) return cost return None def solve(): import sys input = sys.stdin.read().split() T = int(input[0]) idx = 1 for _ in range(T): A = int(input[idx]) B = int(input[idx+1]) C = int(input[idx+2]) idx += 3 candidates = [] # Compute for all four cases for case_func in [compute_case_a, compute_case_b, compute_case_c, compute_case_d]: cost = case_func(A, B, C) if cost is not None: candidates.append(cost) # If there are valid candidates, choose the minimum; else, -1 if not candidates: print(-1) else: print(min(candidates)) if __name__ == '__main__': solve()