Pagini recente » Cod sursa (job #960527) | Cod sursa (job #2713929)
#include<bits/stdc++.h>
using namespace std;
ifstream fin("scmax.in");
ofstream fout("scmax.out");
int a[100001], v[100001], p[100001], n, lmv;
int cautare_binara(int nr)
{
int st=1, dr=lmv;
while(st<=dr)
{
int mij=(st+dr)/2;
if(nr<=v[mij])
dr=mij-1;
else
st=mij+1;
}
return st;
}
void caut()
{
for(int i=1;i<=n;i++)
{
p[i]=cautare_binara(a[i]);
v[p[i]]=a[i];
if(p[i]>lmv)
lmv++;
}
}
void afis(int ind, int nr)
{
for(int i=ind;i>0;i--)
{
if(p[i]==nr)
{
afis(i-1, nr-1);
fout<<a[i]<< " ";
break;
}
}
}
int main()
{
fin>>n;
for(int i=1;i<=n;i++)
fin>>a[i];
caut();
fout<<lmv<< "\n";
afis(n,lmv);
return 0;
}