Pagini recente » Cod sursa (job #2305542) | Cod sursa (job #2856901) | Cod sursa (job #1918369) | Cod sursa (job #418393) | Cod sursa (job #1968730)
#include <fstream>
#include <cstring>
#include <vector>
#include <algorithm>
#include <stack>
#include <iomanip>
#include <queue>
using namespace std;
ifstream fin("scmax.in");
ofstream fout("scmax.out");
#define nmax 100010
int l[nmax],ind[nmax],p[nmax],a[nmax],i,n,ans;
void afisare(int x)
{
if (x==0)
return;
afisare(p[x]);
fout << a[x] << ' ';
}
int main()
{
fin >> n;
for (i=1; i<=n; i++)
{
fin >> a[i];
int poz=lower_bound(l+1,l+ans+1,a[i])-l;
l[poz]=a[i];
ind[poz]=i;
p[i]=ind[poz-1];
if (poz>ans)
ans=poz;
}
fout << ans << '\n';
afisare(ind[ans]);
fout << '\n';
}