Pagini recente » Cod sursa (job #2912205) | Cod sursa (job #3291256) | Cod sursa (job #1766880) | Arhiva de probleme | Cod sursa (job #1889040)
#include <iostream>
#include <cstdio>
using namespace std;
int main()
{
FILE *intrare,*iesire;
int n,i,j,v[100000],pred[100000],a[100000],d[100000],r=0,c=0,m=0;
intrare=fopen("scmax.in","r");
iesire=fopen("scmax.out","w");
fscanf(intrare,"%d",&n);
for (i=0; i<=n-1; ++i)
{
fscanf(intrare,"%d",&v[i]);
}
for (i=0; i<=n-1; ++i)
{
d[i]=1;
pred[i]=-1;
for (j=0; j<=i-1; ++j)
{
if (v[i]>v[j] && d[j]+1>d[i])
{
d[i]=d[j]+1;
pred[i]=j;
}
}
}
for (i=1; i<=n-1; ++i)
{
if (d[i]>d[r])
r=i;
}
fprintf(iesire,"%d\n",d[r]);
m=d[r];
c=r;
while (c!=-1)
{
a[m-1]=v[c];
--m;
c=pred[c];
}
for (i=0; i<d[r]; ++i)
{
fprintf(iesire,"%d ",a[i]);
}
}