Pagini recente » Cod sursa (job #716271) | Cod sursa (job #188321) | Cod sursa (job #262805) | Cod sursa (job #207485) | Cod sursa (job #1488063)
#include<fstream>
using namespace std;
ifstream in("scmax.in");
ofstream out("scmax.out");
int t[100003], n, i, x[100003], p, u, k, mij, d[100003];
void afisare (int k)
{
if(t[k]>0)
afisare (t[k]);
out<<x[k]<<" ";
}
int main()
{
in>>n;
for(i=1; i<=n; i++)
in>>x[i];
for(i=1; i<=n; i++)
{
p=1; u=k;
while(p<=u)
{
mij=p+(u-p)/2;
if(x[i]>x[d[mij]])
p=mij+1;
else
u=mij-1;
}
if(p>k)
{
d[++k]=i;
t[i]=d[k-1];
}
else
{
if(x[i]<x[d[p]])
{
d[k]=i;
t[i]=d[k-1];
}
}
}
out<<k<<"\n";
afisare (d[k]);
return 0;
}