Aizu Online Judge(AOJ)の過去問から、その提出コードの解答例です。
・問題 "Longest Increasing Subsequence"
https://onlinejudge.u-aizu.ac.jp/problems/DPL_1_D
・最長増加部分列
僕が作成、提出したコードは、以下のとおりです。
Aizu Online Judge in C++ #DPL_1_D : Longest Increasing Subsequence
/* Aizu Online Judge in C++ #DPL_1_D : Longest Increasing Subsequence https://onlinejudge.u-aizu.ac.jp/problems/DPL_1_D 提出コードの解答例 https://neguse-atama.hatenablog.com */ #include<bits/stdc++.h> using namespace std; int main(void){ int n; cin>>n; vector<int> a(n); for(int i=0;i<n;i++){ cin>>a[i]; } vector<int> dp; for(int i : a){ auto itr=lower_bound(dp.begin(),dp.end(),i); if(itr==dp.end()){ dp.push_back(i); }else{ *itr=i; } } cout<<dp.size()<<endl; return 0; }
設問の出典は、プログラミング問題のオンライン採点システム「Aizu Online Judge(AOJ)」です。
http://judge.u-aizu.ac.jp/onlinejudge/