Pagini recente » Cod sursa (job #773711) | Cod sursa (job #559481) | Cod sursa (job #1533304) | Cod sursa (job #3122454) | Cod sursa (job #1155583)
#include <cstdio>
using namespace std;
int x[1002],y[1002],z[1002],v,u[1002];
FILE *f=fopen("scmax.in","r");
FILE *g=fopen("scmax.out","w");
void binara(int n,int i,int &mx)
{
if(i<=n)
{
if(y[i]>mx)
{
mx=y[i];
binara(n,i+1,mx);
}
else binara(n,i+1,mx);
}
}
int main()
{
int n,mx=y[1],k;
fscanf(f,"%d",&n);
for(int i=1;i<=n;++i)
fscanf(f,"%d",&x[i]);
for(int i=1;i<=n;++i)
{
y[i]=1;
for(int j=1;j<i;++j)
if(x[i]>x[j])
if(y[i]<y[j]+1)
{
y[i]=y[j]+1;
z[i]=j;
}
}
for(int i=2;i<=n;++i)
if(y[i]>mx)
{
mx=y[i];
k=i;
}
do
{
++v;
u[v]=x[k];
k=z[k];
}while(k!=0);
binara(v,1,mx);
fprintf(g,"%d\n",mx);
for(int i=v;i>=1;--i)
fprintf(g,"%d ",u[i]);
fclose(f);
fclose(g);
return 0;
}