Pagini recente » Cod sursa (job #2207961) | Cod sursa (job #1605681) | Cod sursa (job #2351485) | Cod sursa (job #2883316) | Cod sursa (job #2949184)
#include <cstdio>
#include <vector>
using namespace std;
const int NMAX=100005;
int v[NMAX],lis=1;
vector <int> temp;
vector <int> :: iterator it;
void LIS(int v[],int n)
{
int i,ind;
temp.push_back(v[1]);
for(i=2;i<=n;i++)
{
if(v[i]>temp.back())
{
temp.push_back(v[i]);
lis++;
}
else
{
ind=lower_bound(temp.begin(),temp.end(),v[i])-temp.begin();
temp[ind]=v[i];
}
}
}
int main()
{
freopen("scmax.in","r",stdin);
freopen("scmax.out","w",stdout);
int n,i;
scanf("%d",&n);
for(i=1;i<=n;i++)
scanf("%d",&v[i]);
LIS(v,n);
printf("%d",lis);
printf("\n");
for(it=temp.begin();it!=temp.end();it++)
printf("%d ",(*it));
fclose(stdin);
fclose(stdout);
return 0;
}