Cod sursa(job #3209995)
Utilizator | Vraja Luca LORDEN | Data | 4 martie 2024 11:50:53 |
---|---|---|---|
Problema | Subsir crescator maximal | Scor | 55 |
Compilator | cpp-64 | Status | done |
Runda | Arhiva educationala | Marime | 0.59 kb |
#include <fstream>
#include <algorithm>
using namespace std ;
ifstream cin ("scmax.in") ;
ofstream cout ("scmax.out") ;
int n, v[100002], dp[100002] ;
int main()
{
cin >> n ;
for (int i = 1 ; i <= n ; i ++)
cin >> v[i] ;
int idx = 1 ;
dp[idx] = v[1] ;
for (int i = 2 ; i <= n ; i ++)
{
if (v[i] > dp[idx])
dp[++idx] = v[i] ;
else
*upper_bound(dp + 1, dp + idx + 1, v[i]) = v[i] ;
}
cout << idx << '\n' ;
for (int i = 1 ; i <= idx ; i ++)
cout << dp[i] << ' ' ;
cout << '\n' ;
return 0 ;
}