Pagini recente » Cod sursa (job #547238) | Cod sursa (job #1563821) | Cod sursa (job #1720757) | Cod sursa (job #3196853) | Cod sursa (job #1946222)
#include <fstream>
using namespace std;
ifstream fin("scmax.in");
ofstream fout("scmax.out");
int a[100003],b[100003],n,x;
void plaseaza(int x)
{
if(a[a[0]]<x)
a[++a[0]]=x;
if(b[b[0]]<x)
b[++b[0]]=x;
else
{
int in=1,fi=b[0],mid;
while(in<=fi)
{
mid=(in+fi)/2;
if(b[mid]<x)
in=mid+1;
else
if(b[mid]==x)
break;
else
fi=mid-1;
}
b[mid]=x;
}
if(b[0]>a[0])
for(int i=0;i<=b[0];i++)
a[i]=b[i];
}
int main()
{
fin>>n;
for(int i=1;i<=n;i++)
{
fin>>x;
plaseaza(x);
}
fout<<a[0]<<"\n";
for(int i=1;i<=a[0];i++)
fout<<a[i]<<" ";
return 0;
}