Pagini recente » Statistici Radu Harabagiu (radu20000) | Istoria paginii runda/ioi_training | Rating bularda georigan valentin (gyon) | Monitorul de evaluare | Cod sursa (job #2275262)
#include <fstream>
using namespace std;
int v[100002],q[100002],p[100002],u;
int cautare(int x)
{
int m;
int first=1,last=u;
while (first<=last)
{
m=(first+last)/2;
if (x>q[m])
first=m+1;
if (x<=q[m])
last=m-1;
}
return first;
}
int main()
{
int n,i,x;
ifstream fin("scmax.in");
ofstream fout("scmax.out");
fin>>n;
for (i=1; i<=n; i++)
{
fin>>v[i];
}
q[1]=v[1],p[1]=1;
u=1;
for (i=2; i<=n; i++)
{
x=cautare(v[i]);
q[x]=v[i],p[i]=x;
if(x>u) u=x;
}
fout<<u<<endl;
x=u;
for(i=n;i>=1;i--)
{
while(p[i]!=u) i--;
q[u]=v[i];u--;
}
for(i=1;i<=x;i++)
fout<<q[i]<<" ";
return 0;
}