Pagini recente » Cod sursa (job #862610) | Cod sursa (job #1965156) | Cod sursa (job #1968756) | Cod sursa (job #70473) | Cod sursa (job #709457)
Cod sursa(job #709457)
#include<fstream>
using namespace std;
ifstream fin("scmax.in");
ofstream fout("scmax.out");
int n,nr,v[100001],val[100001],best[100001],par[100001],k,i,aux;
inline void caut_binar()
{int step;
for (step=1;step<nr;step<<=1);
for (aux=0;step;step>>=1)
if (aux+step<nr && val[aux+step]<= v[i])
aux += step;
}
int main()
{ fin >> n;
for (i=1;i<=n;++i)
fin >> v[i];
for (i=1;i<=n;++i)
{ if (v[i] > val[nr])
{ val[++nr] = v[i];
best[i] = nr;
par[nr] = i;
}
else
{ caut_binar();
if (val[aux] != v[i])
{ ++aux;
val[aux] = v[i];
par[aux] = i;
best[i] = aux;
}
else
best[i] = aux;
}
}
fout << nr << '\n';
k = 1;
for (i=1;i<=n;++i)
if (best[i] == k)
{ fout << v[i] << " ";
++k;
}
return 0;
}