Pagini recente » Cod sursa (job #1995091) | Cod sursa (job #804806) | Cod sursa (job #3177560) | Cod sursa (job #2486294) | Cod sursa (job #202766)
Cod sursa(job #202766)
#include<fstream.h>
#include<string.h>
#define MAX 1000
long n, a[MAX];
ofstream fout("scmax.out");
void citire()
{
int i;
ifstream fin("scmax.in");
fin>>n;
for(i=1;i<=n;i++)
fin>>a[i];
fin.close();
}
void lungime_max(long l[MAX], long &lmax, long &poz)
{
long i;
lmax=l[1]; poz=1;
for(i=2;i<=n;i++)
if(l[i]>lmax)
lmax=l[i], poz=i;
}
void sc(long poz, long pred[MAX], long l[MAX])
{
if (pred[poz]!=0)
{
sc(pred[poz], pred, l);
fout<<a[poz]<<' ';
}
else fout<<a[poz]<<' ';
}
void det()
{
long l[MAX], pred[MAX],i,j,lmax,poz;
memset(l, 0, sizeof(l));
memset(pred, 0, sizeof(pred));
l[1]=1;
for(i=2;i<=n;i++)
{
for(j=1;j<i;j++)
if(a[i]>a[j] && l[j]+1>l[i])
l[i]=l[j]+1, pred[i]=j;
if (l[i]==0) l[i]++;
}
lungime_max(l,lmax,poz);
fout<<lmax<<'\n';
cout<<pred[1];
sc(poz,pred,l);
fout.close();
}
int main()
{
citire();
det();
return 0;
}