結果
問題 | No.5020 Averaging |
ユーザー |
|
提出日時 | 2024-04-06 20:13:13 |
言語 | PyPy3 (7.3.15) |
結果 |
AC
|
実行時間 | 980 ms / 1,000 ms |
コード長 | 2,414 bytes |
コンパイル時間 | 382 ms |
コンパイル使用メモリ | 81,700 KB |
実行使用メモリ | 82,084 KB |
スコア | 19,386,537 |
最終ジャッジ日時 | 2024-04-06 20:14:06 |
合計ジャッジ時間 | 51,710 ms |
ジャッジサーバーID (参考情報) |
judge15 / judge14 |
純コード判定しない問題か言語 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
other | AC * 50 |
ソースコード
import copyimport randomfrom time import perf_counterimport argparseimport sysimport mathclass TimeKeeper:def __init__(self):self.start_time = perf_counter()def is_time_over(self, LIMIT):return (perf_counter() - self.start_time) >= LIMITdef time_now(self):return (perf_counter() - self.start_time)def calscore(ans, C0):C = C0[:]X = len(ans)sc = 0for i in range(X):u, v = ans[i]a0, b0 = C[u]a1, b1 = C[v]C[u] = (a0 + a1)//2, (b0 + b1)//2C[v] = (a0 + a1)//2, (b0 + b1)//2V1 = abs(C[0][0] - 5*10**17)V2 = abs(C[0][1] - 5*10**17)sc = int(2*10**6 - 10**5 * math.log10(max(V1, V2) + 1))return sc###########################################def main(DEBUG):tk = TimeKeeper()if DEBUG == True:LIMIT = 0.85else:LIMIT = 0.85def output(ans):print(len(ans))for i in range(len(ans)):u, v = ans[i]u += 1v += 1print(u, v)returndef solve(LIMIT):C = C0[:]ans = []a0 = C[0][0]b0 = C[0][1]V1 = abs(a0 - 5*10**17)V2 = abs(b0 - 5*10**17)nowV = max(V1, V2)while len(ans) < 50:if tk.is_time_over(LIMIT):breakfor i in range(1, N):ai, bi = C[i][0], C[i][1]nxV1 = abs((a0 + ai) // 2 - 5*10**17)nxV2 = abs((b0 + bi) // 2 - 5*10**17)nxtV = max(nxV1, nxV2)if nxtV < nowV:nowV = nxtVa0 = (a0 + ai) // 2b0 = (b0 + bi) // 2C[i] = (a0, b0)ans.append((0, i))sc = int(2*10**6 - 10**5 * math.log10(nowV + 1))print(sc, nowV, a0, b0, file=sys.stderr)return ansN = int(input())C0 = []for i in range(N):a, b = map(int, input().split())C0.append((a, b))ans = solve(LIMIT)sc = calscore(ans, C0)print("SC", sc, file=sys.stderr)output(ans)returnif __name__ == '__main__':parser = argparse.ArgumentParser(description='Debug mode')parser.add_argument('--debug', action='store_true', help='Enable debug mode')args = parser.parse_args()main(args.debug)