Pagini recente » Cod sursa (job #827077) | Cod sursa (job #739067) | Cod sursa (job #2016713) | Cod sursa (job #1531652) | Cod sursa (job #1116664)
#include<cstdio>
#include<vector>
using namespace std;
#define pb push_back
int N;
vector<int> v;
void solve(int x);
int main()
{
int x;
freopen("scmax.in" , "r" , stdin );
freopen("scmax.out" , "w" , stdout );
scanf("%d" , &N );
for(int i = 1 ; i <= N ; ++i )
{
scanf("%d" , &x);
solve(x);
}
printf("%d\n" , v.size());
for(int i = 0 ; i < (int)v.size() ; ++i )
printf("%d " , v[i] );
return 0 ;
}
void solve(int x)
{
int ls , ld, m;
if(!v.size() || x > v[v.size()-1])
v.pb(x);
else
{
ld = v.size();ls = 0;
while(ls <= ld)
{
m = (ls+ld)/2;
if(v[m] == x)return;
if(v[m] < x)ls = m+1;
else
ld = m-1;
}
v[ls] = x;
}
}