結果
| 問題 | No.3363 Two Closest Numbers |
| コンテスト | |
| ユーザー |
👑 |
| 提出日時 | 2026-09-11 15:49:19 |
| 言語 | PyPy3 (7.3.23 + ACL) |
| 結果 |
AC
不安定
|
| 実行時間 | 106 ms / 2,000 ms |
| + 281µs | |
| コード長 | 1,728 bytes |
| 記録 | |
| コンパイル時間 | 518 ms |
| コンパイル使用メモリ | 81,280 KB |
| 実行使用メモリ | 114,688 KB |
| 最終ジャッジ日時 | 2026-09-11 15:49:36 |
| 合計ジャッジ時間 | 10,125 ms |
|
ジャッジサーバーID (参考情報) |
judge2_0 / judge3_0 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 3 |
| other | AC * 59 |
ソースコード
import sys
from typing import List, Tuple
import random
int1 = lambda x: int(x) - 1
# input = lambda: sys.stdin.readline().rstrip('\n')
ii = lambda: int(input())
vi = lambda: list(map(int, input().split()))
vi1 = lambda: list(map(int1, input().split()))
def dbg(*args, **kwargs):
print(*(repr(arg) for arg in args), *(f'{k}: {repr(v)}' for k, v in kwargs.items()),
sep='; ', file=sys.stderr, flush=True)
def main():
MOD = 998244353
def mize(x):
a = 0
for i in x:
a = (10 * a + i) % MOD
return a
n = ii()
c = sorted(vi())
if n % 2 == 1:
x = c[:n // 2 + 1]
y = reversed(c[n // 2 + 1:])
return (mize(x) - mize(y)) % MOD
cnt = [0] * 10
for cv in c:
cnt[cv] += 1
def solve(ccnt):
ans = MOD
for i in range(10):
for j in range(i):
if ccnt[i] >= 1 and ccnt[j] >= 1:
rem = []
for k in range(10):
rem.extend([k] * (ccnt[k] - (k == i or k == j)))
rem.sort()
x = [i] + rem[:len(rem) // 2]
y = [j] + list(reversed(rem[len(rem) // 2:]))
ans = min(ans, mize(x) - mize(y))
if ans == MOD:
ans = 0
return ans
avail = [i for i in range(10) if cnt[i] >= 2]
cnt = [i % 2 for i in cnt]
ans = solve(cnt)
for v in avail:
cnt[v] += 2
ans = min(ans, solve(cnt[:]))
cnt[v] -= 2
return ans
def _start():
if (ret := main()) is not None:
print(*ret) if isinstance(ret, List) or isinstance(ret, Tuple) else print(ret)
if __name__ == '__main__':
_start()