結果
問題 |
No.5021 Addition Pyramid
|
ユーザー |
![]() |
提出日時 | 2025-02-25 21:56:43 |
言語 | Go (1.23.4) |
結果 |
AC
|
実行時間 | 15 ms / 2,000 ms |
コード長 | 934 bytes |
コンパイル時間 | 12,034 ms |
コンパイル使用メモリ | 238,640 KB |
実行使用メモリ | 6,824 KB |
スコア | 1,647,843 |
最終ジャッジ日時 | 2025-02-25 21:57:04 |
合計ジャッジ時間 | 15,035 ms |
ジャッジサーバーID (参考情報) |
judge5 / judge1 |
純コード判定しない問題か言語 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
other | AC * 50 |
ソースコード
package main import . "fmt" import "math/rand" const M int = 1e8 func min(a,b int) int { if a<b { return a } return b } func abs(a int) int { if a<0 { return -a } return a } func calc(n int, a [][]int, c[]int) (s int64) { x:=make([]int,n) copy(x,c) for i:=n-1;i>=0;i-- { for j:=range a[i] { d:=abs(x[j]-a[i][j]) s+=int64(min(d,M-d)) if j+1<len(x) { x[j]+=x[j+1] x[j]%=M } } } return } func random(n int, a [][]int) (c []int) { c=make([]int,n) for i:=range c { x:=a[n-1][i]+rand.Intn(M)/3-M/6 if x<0 { x+=M } c[i]=x%M } return } func main() { var n int Scan(&n) a:=make([][]int,n) for i:=range a { a[i]=make([]int,i+1) for j:=range a[i] { Scan(&a[i][j]) } } c:=make([]int,n) s:=calc(n,a,c) for i:=0;i<100;i++ { t:=random(n,a) ts:=calc(n,a,t) if ts>s { s=ts c=t } } for i,v:=range c { if i>0 { Print(" ") } Print(v) } Println() }