Pagini recente » Atasamentele paginii Profil MariaBadita | Atasamentele paginii abcdfe | Profil fogggab | Monitorul de evaluare | Cod sursa (job #2029076)
#include <iostream>
#include <fstream>
using namespace std;
ifstream fin("subsir2.in");
ofstream fout("subsir2.out");
int n, i, j, nr, v[100], mx, rez[100];
int best[100], pre[100], in;
int main()
{
fin >> n;
for (i = 1; i <= n; i++)
fin >> v[i];
best[1] = 1;
for (i = 2; i <= n; i++)
{
mx = 0;
for (j = 1; j < i; j++)
{
if (v[j] < v[i] && best[j] > mx)
{
mx = best[j];
pre[i] = j;
}
if (v[j] < v[i] && best[j] == mx && j < pre[i])
pre[i] = j;
}
best[i] = mx + 1;
}
mx = 0;
for (i = 1; i <= n; i++)
{
if (best[i] > mx)
{
mx = best[i];
in = i;
}
if (best[i] == mx && v[i] < v[in])
in = i;
}
i = in;
while (i != 0)
{
nr++; rez[nr] = v[i];
i = pre[i];
}
fout << nr << "\n";
for (i = nr; i >= 1; i--) fout << rez[i] << " ";
return 0;
}