結果
問題 |
No.5020 Averaging
|
ユーザー |
![]() |
提出日時 | 2024-02-25 15:49:24 |
言語 | PyPy3 (7.3.15) |
結果 |
AC
|
実行時間 | 60 ms / 1,000 ms |
コード長 | 1,059 bytes |
コンパイル時間 | 351 ms |
コンパイル使用メモリ | 81,700 KB |
実行使用メモリ | 68,196 KB |
スコア | 19,809,899 |
最終ジャッジ日時 | 2024-02-25 15:49:30 |
合計ジャッジ時間 | 5,424 ms |
ジャッジサーバーID (参考情報) |
judge13 / judge12 |
純コード判定しない問題か言語 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
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,(a+b)//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 for i in range(N): best_cost=calculate_cost(A[i],B[i]) 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=new_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)