Pagini recente » Cod sursa (job #1315654) | Cod sursa (job #2652802) | Cod sursa (job #1543722) | Cod sursa (job #2485606) | Cod sursa (job #1766634)
#include <fstream>
using namespace std;
ifstream fin("scmax.in");
ofstream fout("scmax.out");
int n,i,k,p,u,mid,v[100002],d[100002],t[100002],w[100002],k2,x;
int main()
{
fin >> n;
for (i=1;i<=n;i++)
fin >>v[i];
d[1]=1;
k=1;
for (i=2;i<=n;i++){
//am v[d[i]] cu i de la 1 la k,un sir sortat
//si caut in el pozitia primei valori mai mare decat v[i]
p=1;u=k;
while (p<=u){
mid=(p+u)/2;
if (v[d[mid]]<v[i])
p=mid+1;
else
u=mid-1;
}
if (p==k+1)
k++;
d[p]=i;
t[i]=d[p-1];
}
fout << k << "\n";
x=d[k];
while (x!=0)
{
w[++k2]=v[x];
x=t[x];
}
for (i=k2;i>=1;i--) fout << w[i] << " ";
return 0;
}