[アルゴリズム]小数BOJ 16471


[BOJ]16471小数点以下的短片


📍 質問する


彼女と一緒にテーブルゲームカフェに行った周彦は、いろいろなテーブルゲームをしながらデートを楽しんでいた.3時間カップルセットを用意した瞬間、周彦は価格表の横に書いてある新しいイベントを見た.
「ボスとのゲームに勝ったら無料で負けたり、引き分けたら追加で5000元払う」というイベントです.将棋ゲームに自信のある周彦は、ボスにゲームのルールを聞いた.ルールは以下の通りだ.
  • 人にN枚のカードが届きます.(Nは奇数)
  • カードを1人1枚選び、カードに書かれている数字の大きさを比較します.(カード1枚あたりの数字は0以上、10万以下は整数)
  • 個の小数点が書かれたカードを出した人は1点を得て、勝負用のカードに負けた.(引き分けの時、両方とも得点が得られなかった)
  • でN回の勝負をした後、(N+1)/2点以上の人が勝った.
  • (N+1)/2点以上の点数を獲得した人がいなければ、ゲームは勝者なしで終わる.
  • 周彦は自分が少し勝率のある状況でゲームをしたいと思っている.
    オーナーが受け取ったカードに書かれている数字と周彦が受け取ったカードに書かれている数字を確認すると、周彦がゲームができるかどうか確認してみましょう.

    📍 入力


    N値は1行目に入力されます.(1≦N<100000、Nは奇数)
    朱彦が受け取ったカードN枚の数字が2行目に入力される.
    社長が受け取ったN枚のカードの数字は3行目に入力されます.

    📍 しゅつりょく


    少し勝つ確率があれば「YES」、勝つ確率がなければ「NO」を出力します.

    📍 に答える


    ハーモニー
    from collections import deque
    from sys import stdin
    N = int(stdin.readline())
    A = list(map(int,stdin.readline().split()))
    B = list(map(int,stdin.readline().split()))
    A.sort() # 오름차순 정렬
    B.sort() # 오름차순 정렬
    B = deque(B)
    count = 0
    for i in range(N): # 작은 값 순서대로
      while B: # 모든 사장님 카드 확인
        if B.popleft() > A[i]: # 사장님 카드보다 작은 카드라면
          count += 1 # 승수 + 1
          break
    if count > (N // 2): # 승수가 N // 2 보다 크면
      print("YES") 
    else: # 승수가 N // 2 보다 작다면
      print("NO")