Pagini recente » Cod sursa (job #1468927) | Cod sursa (job #100122) | Cod sursa (job #2572308) | Cod sursa (job #523706) | Cod sursa (job #2650173)
#include <fstream>
#include <deque>
#include <vector>
#include <bitset>
#include <queue>
#include <unordered_set>
#include <algorithm>
#include <cmath>
#define MOD 10007
using namespace std ;
ifstream cin ("scmax.in") ;
ofstream cout ("scmax.out") ;
vector<int> v, fin, poz_pt_recur ;
int lmax()
{
for(int f = 0 ; f < v.size() ; f ++)
if(fin.empty() || fin.back() < v[f])fin.push_back(v[f]), poz_pt_recur.push_back(fin.size() - 1) ;
else poz_pt_recur.push_back(upper_bound(fin.begin(), fin.end(), v[f]) - fin.begin()), fin[poz_pt_recur.back()] = v[f] ;
return fin.size() ;
}
void recur(int n, int cautatul)
{
for(int f = n ; f >= 0 ; f --)
{
if(poz_pt_recur[f] == cautatul)
{
recur(f - 1, cautatul - 1) ;
cout << v[f] << " " ;
return ;
}
}
}
int main()
{
int n ;
cin >> n ;
vector<int> aux ;
for(int f = 1, mm ; f <= n ; f ++)
cin >> mm, v.push_back(mm) ;
cout << lmax() << endl ;
recur(poz_pt_recur.size(), fin.size() - 1) ;
return 0 ;
}
/// pestelee, descdiv