Pagini recente » Cod sursa (job #313846) | Istoria paginii utilizator/furfur233 | Cod sursa (job #2565129) | Istoria paginii utilizator/hellboy_florin | Cod sursa (job #1998401)
#include <fstream>
#include <iostream>
#include <cmath>
using namespace std;
ifstream fin("scmax.in");
ofstream fout("scmax.out");
int main()
{
int n, v[100001], lg[100001], low, high, mid, i;
lg[0]=0;
fin>>n;
for (i=1;i<=n;i++)
fin>>v[i];
for (i=1;i<=n;i++)
{
if (v[i]>lg[lg[0]])
{
lg[++lg[0]]=v[i];
}
else
{
low=1;
high=lg[0];
while (high-low>1)
{
mid=ceil((low+high)/2);
if (v[i]<lg[mid])
high=mid;
else low=mid;
}
if (v[i]<lg[low])
lg[low]=v[i];
}
}
fout<<lg[0]<<'\n';
for (i=1;i<=lg[0];i++)
fout<<lg[i]<<" ";
return 0;
}