Pagini recente » Cod sursa (job #337061) | Cod sursa (job #2409318) | Cod sursa (job #1416251) | Cod sursa (job #444308) | Cod sursa (job #472342)
Cod sursa(job #472342)
#include <fstream>
#define NMAX 100001
std::ofstream fout("scmax.out");
int N,A[NMAX];
int L[NMAX];
int prec[NMAX];
int max,p;
void init()
{
for(int i=1;i<=N;i++)
{
L[i]=1;
prec[i]=-1;
}
}
void citire()
{
std::ifstream fin("scmax.in");
fin>>N;
for(int i = 1; i <= N ; i++ )
{
fin>>A[i];
}
fin.close();
}
void rec(int p)
{
if(prec[p]!=-1)
{
rec(prec[p]);
fout<<A[p]<<" ";
}
else fout<<A[p]<<" ";
}
void afisare()
{
fout<<max<<"\n";
rec(p);
fout.close();
}
void calculare()
{
for( int i = 2; i <= N; i++)
for( int j = 1; j < i ; j++)
if ( A[j] < A[i])
{
if (1+L[j] > L[i])
{
L[i]=1+L[j];
prec[i]=j;
if(max < L[i])
{
max=L[i];
p=i;
}
}
}
}
int main(int argc, char *argv[])
{
citire();
init();
calculare();
afisare();
}