Pagini recente » Cod sursa (job #2884312) | Cod sursa (job #3223473) | Cod sursa (job #2222119) | Cod sursa (job #2492116) | Cod sursa (job #1155556)
#include <cstdio>
#include <algorithm>
#include <vector>
using namespace std;
int x[1002],y[1002],z[1002],v,u[1002];
int main()
{
FILE *f=fopen("scmax.in","r");
FILE *g=fopen("scmax.out","w");
int n,max=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]>max)
{
max=y[i];
k=i;
}
fprintf(g,"%d\n",max);
do
{
++v;
u[v]=x[k];
k=z[k];
}while(k!=0);
std::reverse(&u[1],&u[v+1]);
for(int i=1;i<=v;++i)
fprintf(g,"%d ",u[i]);
fclose(f);
fclose(g);
return 0;
}