Pagini recente » Cod sursa (job #2013978) | Cod sursa (job #521653) | Cod sursa (job #2272052) | Cod sursa (job #1728066) | Cod sursa (job #2077375)
#include <iostream>
#include <fstream>
using namespace std;
#define nmax 100005
ifstream f("scmax.in");
ofstream g("scmax.out");
int n,v[nmax],t[nmax],d[nmax],k;
int main()
{
f>>n;
for (int i=1;i<=n;++i)
f>>v[i];
for (int i=1;i<=n;++i)
{
int prim=1;
int ultim=k;
while (prim<=ultim)
{
int mid=(prim+ultim)/2;
if (v[i]<d[mid])
ultim=mid-1;
else if (v[i]>d[mid])
prim=mid+1;
else
break;
}
int poz=prim;
if (poz>k)
k=poz;
d[poz]=v[i];
t[poz]=i;
}
g<<k<<'\n';
for (int i=1;i<=k;++i)
g<<v[t[i]]<<' ';
return 0;
}