Pagini recente » Cod sursa (job #265771) | Cod sursa (job #975588) | Votati personajul preferat Infoarena | Cod sursa (job #1803381) | Cod sursa (job #1309458)
#include <fstream>
using namespace std;
ifstream in ("scmax.in");
ofstream out ("scmax.out");
const int vect = 100001;
int n,v[vect];
int lung[vect];
int pred[vect];
int lungm[vect];
void refac (int i)
{
if (i==0) return;
refac(pred[i]);
out << v[i] << " ";
}
int main()
{
int lmax;
in >> n;
for (int i=1; i<=n; i++)
{
in >> v[i];
}
lung[1] = 1;
for (int i=2; i<=n; i++)
{
int lmax=0;
for (int j=1; j<i; j++)
if (v[j]<v[i])
if (lung[j]>lmax)
{
lmax=lung[j];
pred[i]=j;
}
lung[i]=1+lmax;
}
int pmax = 1;
for(int i = 2; i <= n; i++)
if (lung[i] > lung[pmax])
pmax = i;
out << lung[pmax] << "\n";
refac(pmax);
return 0;
}