Pagini recente » Cod sursa (job #2652968) | Cod sursa (job #1645430)
#include <fstream>
#define NMax 100100
using namespace std;
ifstream fin("scmax.in");
ofstream fout("scmax.out");
int nr,a,n,i;
int best[NMax];
void BinarySearch(int target)
{
int in=1,sf=nr;
int mij=(in+sf)/2;
while(in<sf)
{
if(best[mij]==target)
return;
if(best[mij]<target)
in=mij+1;
else
sf=mij-1;
mij=(in+sf)/2;
}
best[in]=target;
}
int main()
{
fin>>n;
for(i=1;i<=n;i++)
{
fin>>a;
if(a>best[nr])
{
best[++nr]=a;
}
else
BinarySearch(a);
}
fout<<nr<<'\n';
for(i=1;i<=nr;i++)
fout<<best[i]<<' ';
return 0;
}