Pagini recente » Cod sursa (job #1020952) | Cod sursa (job #695503) | Cod sursa (job #1139101) | Cod sursa (job #382946) | Cod sursa (job #2573235)
#include <bits/stdc++.h>
#define NMAX 100009
#define INF 2e9+1
using namespace std;
ifstream fin("scmax.in");
ofstream fout("scmax.out");
int v[NMAX];
int best[NMAX];
int ar[NMAX];
vector<int>sol;
int cate;
int n;
void citire();
int main()
{citire();
return 0;
}
void citire()
{
int i;
fin>>n;
for(i=1;i<=n;i++)
fin>>v[i];
best[1]=1;
ar[1]=v[1];
cate=1;
for(i=2;i<=n;i++)
{
if(v[i]>ar[cate])
{
ar[++cate]=v[i];
best[i]=cate;
}
else
{
int pos=lower_bound(ar+1,ar+cate+1,v[i])-ar;
best[i]=pos;
ar[pos]=v[i];
}
}
fout<<cate<<'\n';
sol.push_back(INF);
for(i=n;i>=1 ;i--)
{
if(best[i]==cate && v[i]<sol[sol.size()-1])
{
sol.push_back(v[i]);cate--;
}
}
for(i=sol.size()-1;i>=1;i--)
fout<<sol[i]<<" ";
}