組合せBOJ 11728アレイ


時間1.5秒、メモリ256 MB
input :
  • N(アレイAの大きさ)M(アレイBの大きさ)(1<=N,M<=10000)
  • .
  • 案Aの内容
  • 配列Bの内容(絶対値が10^9以下の整数)
  • output :
  • の2つの配列を結合し、ソート結果を出力します.
  • 実は2つのリストをまとめたり、追加して並べ替えたりすればいいのです
    問題では、ソートをマージするmergeメソッドでソートしたいようです.これが時間の複雑さです...
    上との差は多くない
    繰り返しが終了すると、2つの配列のうちの1つでもidxはlen(配列)になります.
    while A_idx < len(A) and B_idx < len(B):
    このとき、len(配列)が形成されていない配列をスムーズにし、正解リストに貼り付けます.
    if A_idx == len(A):
        answer = answer + B[B_idx:]
    else:
        answer += A[A_idx:]
    正しいコード:
    
    N, M = map(int, input().split())
    A = list(map(int, input().split()))
    B = list(map(int, input().split()))
    
    A_idx = 0
    B_idx = 0
    answer = []
    while A_idx < len(A) and B_idx < len(B):
        if A[A_idx] < B[B_idx]:
            answer.append(A[A_idx])
            A_idx += 1
        elif A[A_idx] > B[B_idx]:
            answer.append(B[B_idx])
            B_idx += 1
        else:
            answer.append(A[A_idx])
            answer.append(A[A_idx])
            A_idx += 1
            B_idx += 1
    
    if A_idx == len(A):
        answer = answer + B[B_idx:]
    else:
        answer += A[A_idx:]
    
    for number in answer:
        print(number, end=" ")

    pypy 3でコミットするのが正しいようです
    遅すぎます...