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

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

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

lis

問題に戻る

解説

서브태스크 111에서는 DiD_iDi​를 iii번째 원소에서 끝나는 최장 증가 부분 수열의 길이라고 정의한다. Aj<AiA_j<A_iAj​<Ai​인 모든 j<ij<ij<i를 확인하여 그중 가장 큰 DjD_jDj​에 111을 더한다. 그런 jjj가 없으면 Di=1D_i=1Di​=1이다. 이전 원소의 인덱스를 함께 저장하면 수열을 복원할 수 있다. 시간 복잡도는 O(N2)O(N^2)O(N2)이다.

전체 문제에서는 길이가 kkk인 증가 부분 수열이 가질 수 있는 마지막 값의 최솟값을 길이별로 유지한다. AiA_iAi​를 처리할 때 이 값들에서 AiA_iAi​ 이상인 첫 위치를 이분 탐색하여 갱신한다. 같은 값은 길이를 늘릴 수 없으므로 AiA_i보다 큰 첫 위치가 아니라 이상인 첫 위치를 찾아야 한다.

각 길이의 마지막 값과 함께 그 값을 만든 원소의 인덱스를 저장한다. AiA_iAi​가 길이 kkk의 상태를 갱신한다면, 길이 k−1k-1k−1의 마지막 원소 인덱스를 iii의 이전 원소로 기록한다. 마지막에 가장 긴 길이의 마지막 원소부터 이전 인덱스를 따라가고 순서를 뒤집으면 답을 얻는다.

한 케이스의 시간 복잡도는 O(Nlog⁡N)O(N\log N)O(NlogN)이고 공간 복잡도는 O(N)O(N)O(N)이다.

Solution written by GPT6

Ai​
AiA_iAi​