結果
問題 |
No.5020 Averaging
|
ユーザー |
![]() |
提出日時 | 2024-02-25 13:34:44 |
言語 | PyPy3 (7.3.15) |
結果 |
AC
|
実行時間 | 61 ms / 1,000 ms |
コード長 | 1,030 bytes |
コンパイル時間 | 281 ms |
コンパイル使用メモリ | 81,700 KB |
実行使用メモリ | 66,128 KB |
スコア | 16,787,592 |
最終ジャッジ日時 | 2024-02-25 13:34:50 |
合計ジャッジ時間 | 4,553 ms |
ジャッジサーバーID (参考情報) |
judge11 / judge15 |
純コード判定しない問題か言語 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
other | AC * 50 |
ソースコード
#ver2 #一番答えが大きくなるものを選ぶ(貪欲) #(i,j)を辞書順に調べる N=int(input()) A=[] B=[] cons=5*10**17 for _ in range(N): a,b=map(int,input().split()) A.append(a) B.append(b) op_cnt=0 #costは低ければ低いほどよい def calculate_cost(a,b): return max(abs(a-cons),abs(b-cons)) def op(u,v): global A global B a,b=A[u],A[v] c,d=B[u],B[v] A[u],A[v]=(a+b)//2,(c+d)//2 B[u],B[v]=(c+d)//2,(c+d)//2 cost=calculate_cost(A[0],B[0]) ans=[] while op_cnt<50: u=-1 v=-1 best_cost=cost for i in range(N): for j in range(N): new_cost=calculate_cost((A[i]+A[j])//2,(B[i]+B[j])//2) if(new_cost<best_cost): u=i v=j best_cost=cost if(v!=-1): break if(v==-1): break else: op_cnt+=1 op(u,v) ans.append([u,v]) cost=calculate_cost(A[0],B[0]) # print(cost) print(len(ans)) for (u,v) in ans: print(u+1,v+1)