Pagini recente » Cod sursa (job #2511831) | Diferente pentru problema/grendizer intre reviziile 25 si 16 | Diferente pentru problema/zombies intre reviziile 13 si 4 | Diferente pentru problema/permbit intre reviziile 18 si 17 | Cod sursa (job #1546803)
#include <fstream>
using namespace std;
ifstream fin("scmax.in");
ofstream fout("scmax.out");
int a[100001], n;
int len[100001], father[100001];
void baga(int poz)
{
if( poz == 0 )
return;
baga(father[poz]);
fout << a[poz] << ' ';
}
int main()
{
fin >> n;
int lmax = 0, pmax, l, p;
for( int i = 1; i <= n; ++i )
{
fin >> a[i];
l = 0, p = 0;
for( int j = i - 1; j > 0; --j )
{
if( a[j] < a[i] && len[j] > l )
l = len[j], p = j;
}
len[i] = l + 1;
father[i] = p;
if( len[i] > lmax )
lmax = len[i], pmax = i;
}
fout << lmax << '\n';
baga(pmax);
return 0;
}