Pagini recente » Cod sursa (job #2814988) | Cod sursa (job #2557912) | Cod sursa (job #1299197) | Cod sursa (job #1735878) | Cod sursa (job #1088643)
#include <fstream>
#include <cstdio>
#define NMAX 100001
using namespace std;
FILE *in;
//ifstream in("LIS.in");
ofstream o("scmax.out");
int n,lgm,pi;
int a[NMAX];
int lg[NMAX];
int prec[NMAX],sir[NMAX];
void cit()
{
int i;
in=fopen("scmax.in","r");
//in>>n;
fscanf(in,"%d",&n);
for(i=1;i<=n;i++)
fscanf(in,"%d",&a[i]);
fclose(in);
}
void LIS()
{
int i,j;
lg[1]=1;
prec[1]=0;
for(i=2;i<=n;i++)
{
lg[i]=1;prec[i]=0;
for(j=1;j<i;j++)
{
if(a[j]< a[i]&&lg[j]+1>lg[i])
{
lg[i]=1+lg[j];
prec[i]=j;
if(lgm<lg[i])
lgm=lg[i],pi=i;
}
}
}
}
void afis()
{
int i=pi,j=1;
o<<lgm<<'\n';
while(i!=0)
{
sir[j]=a[i];
j++;
i=prec[i];
}
for(i=j-1;i>=1;i--)
o<<sir[i]<<' ';
o<<'\n';o.close();
}
int main()
{
cit();
LIS();
afis();
return 0;
}