Pagini recente » Cod sursa (job #2850985) | Cod sursa (job #2041667) | Cod sursa (job #740673) | Cod sursa (job #2719346) | Cod sursa (job #1785978)
#include <fstream>
using namespace std;
int a[100003], n, b[100003], pozitie[1000003], p, maxi;
int main()
{
freopen ("scmax.in", "r", stdin);
freopen ("scmax.out", "w", stdout);
scanf ("%d", &n);
for (int i = 0; i < n; i++)
scanf ("%d", &a[i]);
maxi = 1;
p = n - 1;
b[n - 1] = 1;
pozitie[n - 1] = -1;
for (int i = n - 2; i >= 0; i--)
{
b[i] = 1;
pozitie[i] = -1;
for (int j = i + 1; j < n; j++)
if (a[i] < a[j] && b[i] < b[j] + 1)
{
b[i] = b[j] + 1;
pozitie[i] = j;
if (b[i] > maxi)
{
maxi = b[i];}
p = i;
}
}
printf ("%d\n", maxi);
while (p != -1)
{
printf ("%d ", a[p]);
p = pozitie[p];
}
return 0;
}