DOJ logoDOJ
問題
最近追加された問題保存した問題Workbooks
カテゴリDLCコンテストグループチーム掲示板
ランキング
正解数ランキングストリークランキングDOJ Powerランキング
提出状況
問題募集ログイン新規登録
DOJ logoDOJ

OI形式のサブタスク採点、Eloレーティング、Discord認証を備えたオンラインジャッジです。

問題
問題一覧カテゴリ
コミュニティ
コンテストランキング掲示板お知らせ外部のコンテストを開催するガイド
アカウント
ログイン新規登録ジャッジ状態
ポリシー
利用規約DLCの利用規則プライバシーAPI 文書言語ランタイムコンテストの順位報酬レーティングとパフォーマンス
© 2026 DOJ
All rights reserved
解説

생일 멘션이 너무 많아

問題に戻る

解説

  • 평균은 정수 나눗셈으로 구합니다. 평균이 MMM보다 크면 −1-1−1을 출력합니다.
  • 평균이 MMM 이하이면, 평균 이하로 멘션을 보낸 사람은 멘션이 MMM번 이하라서 메시지가 겹치지 않습니다.
  • 111번 메시지는 모든 사람에게 가므로 NNN번 보냅니다.
  • iii번 메시지(i≥2i \ge 2i≥2)는 멘션 횟수가 iii 이상이고 평균 이하인 사람에게 한 번씩 갑니다.
  • 멘션 횟수가 평균 이하인 사람을 횟수별로 센 뒤, MMM부터 거꾸로 누적합을 구하면 iii번 이상 보낸 사람 수가 나옵니다.
  • 사람을 한 번 훑는 데 O(N)\mathcal{O}(N)O(N), 누적합에 O(M)\mathcal{O}(M)O(M)이 들어 시간복잡도는 O(N+M)\mathcal{O}(N+M)O(N+M)입니다.
  • 정렬한 뒤 이분탐색을 써도 됩니다.
    • 222번 이상 멘션을 보낸 사람의 수를 이분탐색 111번으로 구합니다.
    • 평균이 정렬된 배열의 어디에 오는지 이분탐색 111번으로 찾습니다.
    • iii번 이상 멘션을 보낸 사람 중 평균 이하인 사람의 수를 iii마다 이분탐색으로 구합니다(MMM번).
    • 이 풀이의 시간복잡도는 입니다.
O((N+M)log⁡N)\mathcal{O}((N+M)\log N)
O((N+M)logN)