結果
問題 |
No.686 Uncertain LIS
|
ユーザー |
![]() |
提出日時 | 2025-02-23 11:26:57 |
言語 | C++11(廃止可能性あり) (gcc 13.3.0) |
結果 |
WA
|
実行時間 | - |
コード長 | 1,146 bytes |
コンパイル時間 | 1,572 ms |
コンパイル使用メモリ | 167,600 KB |
実行使用メモリ | 13,648 KB |
最終ジャッジ日時 | 2025-02-23 11:27:06 |
合計ジャッジ時間 | 7,332 ms |
ジャッジサーバーID (参考情報) |
judge3 / judge1 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
other | AC * 4 WA * 5 TLE * 1 -- * 26 |
ソースコード
#include <bits/stdc++.h> using namespace std; int main() { int n; cin >> n; vector<pair<int, int>> range(n); // ????A[i]????? [L_i, R_i] for (int i = 0; i < n; ++i) { cin >> range[i].first >> range[i].second; } // ??????????dp[value]??????? value ??????????? map<int, int> dp; // ??map?????value???LIS?? // ?????? for (int i = 0; i < n; ++i) { int L = range[i].first, R = range[i].second; map<int, int> new_dp = dp; // ???????????dp // ????? [L, R] ???? for (int v = L; v <= R; ++v) { // ??????v?????dp[v] auto it = dp.lower_bound(v); if (it != dp.begin()) { --it; // ????v???? new_dp[v] = max(new_dp[v], it->second + 1); } else { // ??????v??????????????1??? new_dp[v] = max(new_dp[v], 1); } } // ?????dp????dp? dp = new_dp; } // ????dp????? int maxLIS = 0; for (auto& entry : dp) { maxLIS = max(maxLIS, entry.second); } cout << maxLIS << endl; return 0; }