Pagini recente » Cod sursa (job #1963636) | Cod sursa (job #3036485) | Cod sursa (job #2164532) | Cod sursa (job #2857607) | Cod sursa (job #2304679)
#include <iostream>
#include <fstream>
#define inf 2000000
using namespace std;
ifstream fin("scmax.in");
ofstream fout("scmax.out");
int dmax,v[100001],d[100001],t[100001],n,i,poz;
int caut (int x)
{
int st=1,dr=dmax,mid;
while(st<=dr)
{
mid=(st+dr)/2;
if(x<=v[d[mid]])
dr=mid-1;
else
st=mid+1;
}
return st ;
}
void sol(int x)
{
if(x!=0)
{
sol(t[x]);
fout<<v[x]<<" ";
}
}
int main()
{
fin>>n;
fin>>v[1];
d[1]=dmax=1;
for(i=2; i<=n; i++)
{
fin>>v[i];
poz=caut(v[i]);
if(poz>dmax)
{
dmax++;
}
d[poz]=i;
t[i]=d[poz-1];
}
fout<<dmax<<"\n";
sol(d[dmax]);
}