結果

問題 No.5021 Addition Pyramid
ユーザー june19312
提出日時 2025-02-25 22:07:28
言語 PyPy3
(7.3.15)
結果
AC  
実行時間 1,839 ms / 2,000 ms
コード長 1,423 bytes
コンパイル時間 377 ms
コンパイル使用メモリ 82,240 KB
実行使用メモリ 79,176 KB
スコア 34,828,731
最終ジャッジ日時 2025-02-25 22:09:05
合計ジャッジ時間 96,147 ms
ジャッジサーバーID
(参考情報)
judge7 / judge3
純コード判定しない問題か言語
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
other AC * 50
権限があれば一括ダウンロードができます

ソースコード

diff #

from time import *
start_time = time()
from random import *
from math import *
from sys import *
def error2(*args, end="\n"):
    print(*args, end=end, file=stderr)

input = stdin.readline
MAX = 100000000

N = int(input())
score = 10**10

# 誤差関数
def error(a, b):
    return min(abs(a - b), MAX - abs(a - b))

tmp = []
for i in range(N):
    tmp.append(list(map(int,input().split())))

ans = []
for i in range(N):
    ans.append([0]*(i+1))

ans[-1] = tmp[-1][:]

def build():
    tmpgosa = 0

    for i in range(N):
        tmpgosa = max(tmpgosa,error(ans[-1][i],tmp[-1][i]))
    
    for i in range(N-2,-1,-1):
        for j in range(i+1):
            ans[i][j] = (ans[i+1][j] + ans[i+1][j+1])%100000000
            tmpgosa = max(tmpgosa,error(ans[i][j],tmp[i][j]))

    return tmpgosa

score = build()
cnt = 0

while time()-start_time < 1.8:
    L = randint(0,N)
    R = randint(0,N)
    if L == R:
        continue
    elif L > R:
        L,R = R,L
    
    before = ans[-1][:]

    for j in range(L,R):
        ans[-1][j] = randint(0,99999999)

    nex = build()
    temp = 10000
    if nex < score:
        score = nex
    else:
        ans[-1] = before

    """
    else:
        diff = abs(nex-score)*(-1)
        prob = exp(diff/temp)
        try1 = random()
        
        if try1 < prob:
            score = nex
        else:
            ans[-1] = before
    """
    cnt += 1

print(*ans[-1])
error2(cnt)
0