Pagini recente » Cod sursa (job #1557985) | Cod sursa (job #963900) | Cod sursa (job #2777485) | Cod sursa (job #853232) | Cod sursa (job #2059754)
#include <iostream>
#include <fstream>
using namespace std;
#define nmax 100005
ifstream f("scmax.in");
ofstream g("scmax.out");
int v[nmax],d[nmax],t[nmax];
int n,k=1,mx=0;
void afis(int x)
{
if (x)
{
afis(t[x]);
g<<v[x]<<' ';
}
}
int main()
{
f>>n;
for (int i=1; i<=n; ++i)
f>>v[i];
t[1]=0;
d[1]=1;
for (int i=2; i<=n; ++i)
{
int p=0;
int u=k;
while (p<=u)
{
int mid=(p+u)/2;
if (v[d[mid]]<v[i])
p=mid+1;
else
u=mid-1;
}
if (p>k)
k=p;
d[p]=i;
t[i]=d[p-1];
}
g<<k<<'\n';
afis(d[k]);
return 0;
}