Pagini recente » Cod sursa (job #1605016) | Cod sursa (job #1098057) | cartof | Cod sursa (job #1860307) | Cod sursa (job #1872055)
#include <iostream>//TOTUL TRE LUAT DE LA DR LA ST CA SA PUTEM TIPARI CRESCATOR!
#include <fstream>
#define MaxN 100003
using namespace std;
ifstream f("scmax.in");
ofstream g("scmax.out");
int n = 5;
int arr[MaxN] = {24, 12, 15, 15, 19};
int maxL[MaxN]; //Lungimea maxima
int prec[MaxN]; //Ordinea elementelor din secvente
int pornire = 0;//Indexul de unde gasim secventa maxima
void Citire()
{
f>>n;
for(int i = 0; i < n; i++)
{
f>>arr[i];
}
}
/*
void Init()
{
//Initializam vectorii
for(int i = 0; i < n; i++)
{
maxL[i] = 1;
prec[i] = -1;
}
}*/
void SCM()
{
int max1 = -1;
for(int i = 0; i < n; i++)
{
//Pornim de la 0, initializam fiecare
maxL[i] = 1;
prec[i] = -1;
for(int j = 0; j < i; j++)
{
if(arr[j] < arr[i] && maxL[i] < maxL[j] + 1)//Sunt crescatoare si formeaza o secventa mai lunga
{
maxL[i] = maxL[j] + 1;
prec[i] = j;//De unde l-am obtinut pe maxL[i]
if(maxL[i] > max1)
{
//Lungimea maxima
max1 = maxL[i];
pornire = i;
}
}
}
}
g<<max1<<endl;
}
void Constr()
{
int i = pornire;//Cautatorul nostru
while( i!=-1 )
{
g<<arr[i]<<" ";
i = prec[i];
}
}
int main()
{
Citire();
SCM();
Constr();
}