Pagini recente » Cod sursa (job #2952820) | Cod sursa (job #2583145) | Cod sursa (job #2303014) | Cod sursa (job #2779504) | Cod sursa (job #2153780)
#include <fstream>
using namespace std;
int n,i,vf,a[100005],s[100005],poz,Max,b[100005],pozmax,nr;
ifstream f("scmax.in");
ofstream g("scmax.out");
int cmp(int x)
{
int dr=vf,st=1,mij,poz=0;
while(st<=dr)
{
mij=(dr+st)/2;
if(s[mij]<x) st=mij+1;
else if(s[mij]>x)
{
dr=mij-1;
poz=mij;
}
else
{
poz=mij;
break;
}
}
return st;
}
int main()
{
f>>n;
for(i=1;i<=n;i++)
{
f>>a[i];
}
for(i=1;i<=n;i++)
{
poz=cmp(a[i]);
if(poz==0)
{
vf=1;
s[vf]=a[i];
b[i]=vf;
}
else
{
s[poz]=a[i];
vf=poz;
b[i]=poz;
}
if(poz>vf)vf++;
if(poz>Max)
{
Max=poz;
pozmax=i;
}
}
g<<Max<<'\n';
for(i=pozmax;i>=1 && Max>0;i--)
{
if(b[i]==Max)
{
s[++nr]=a[i];
Max--;
}
}
for(i=nr;i>=1;i--)
{
g<<s[i]<<" ";
}
return 0;
}