Pagini recente » Cod sursa (job #244367) | Cod sursa (job #2613184) | Cod sursa (job #2331563) | Cod sursa (job #1815609) | Cod sursa (job #1268641)
#include <cstdio>
#include <vector>
#include <algorithm>
using namespace std;
#define INF ((1 << 31) - 1)
int main()
{
freopen("scmax.in", "r", stdin);
freopen("scmax.out", "w", stdout);
int N;
scanf("%d", &N);
vector < int > A(N);
int i;
for(i = 0 ; i < N ; ++i)
scanf("%d", &A[i]);
vector < int > LIS(N + 1 , INF);
for(i = 0 ; i < N ; ++i)
*lower_bound(LIS.begin(), LIS.end(), A[i]) = A[i];
int Count = 0;
for(i = 0 ; i <= N ; ++i)
if(LIS[i] == INF)
++Count;
printf("%d\n", Count);
for(i = 0 ; i <= N ; ++i)
if(LIS[i] != INF)
printf("%d ", LIS[i]);
return 0;
}