Pagini recente » Cod sursa (job #373182) | Cod sursa (job #1481062) | Cod sursa (job #610229) | Cod sursa (job #3031836) | Cod sursa (job #1861442)
#include <fstream>
using namespace std;
#define tt 100002
ifstream f("scmax.in");
ofstream g("scmax.out");
int n,m=0,i,k,a[tt],b[tt],poz[tt];
inline int caut(int in,int sf,int x)
{
int m;
while(in<=sf)
{
m=(in+sf)/2;
if(x<a[b[m]])
in=m+1;
else
sf=m-1;
}
return in;
}
int main()
{
f>>n;
for(i=1;i<=n;i++)
f>>a[i];
//rez
for(i=n;i>=1;i--)
{
k=caut(1,m,a[i]);
if(k>m)
{
poz[i]=b[k-1];
m=k;
b[k]=i;
}
else
{
poz[i]=b[k-1];
if(a[b[k]]<a[i])
b[k]=i;
}
}
g<<m<<'\n';
for(i=b[m];i;i=poz[i])
g<<a[i]<<" ";
}