Pagini recente » Cod sursa (job #3287694) | Cod sursa (job #2417942) | Cod sursa (job #791693) | Cod sursa (job #3003535) | Cod sursa (job #809123)
Cod sursa(job #809123)
#include <fstream>
using namespace std;
ifstream fin ("scmax.in");
ofstream fout ("scmax.out");
int lgmax[100003], a[100003], sol, urm[100003], p, n;
void citire();
void pd();
void constr();
int main()
{
citire();
pd();
constr();
return 0;
fout.close();
}
void citire()
{
fin >> n;
for (int i=0; i<n; ++i)
fin >> a[i];
}
void pd()
{
int i, j, maxim=1;
lgmax[n-1] = 1;
urm[n-1] = -1;
p = n;
for (i=n-2; i>=0; i--)
{
lgmax[i] = 1;
urm[i] = -1;
for (j=i+1; j<=n-1; ++j)
if (a[i]<a[j] && lgmax[i] < lgmax[j]+1)
{
lgmax[i] = lgmax[j]+1;
urm[i] = j;
if (lgmax[i]>maxim)
maxim = lgmax[i],p=i;
}
}
fout << maxim << '\n';
}
void constr()
{
int i=p;
while (i!=-1)
{
fout << a[i] << ' ';
i=urm[i];
}
}