Pagini recente » Cod sursa (job #604917) | Cod sursa (job #3180734) | Cod sursa (job #729879) | Cod sursa (job #1389251) | Cod sursa (job #1426847)
#include <fstream>
using namespace std;
int main()
{
int N, i;
ifstream f("scmax.in");
f >> N;
int a[N];
int best[N], j, pre[N];
for (i = 0; i < N; i++)
f >> a[i];
f.close();
fill(best, best + N, 0);
int maxLength;
for (i = N - 1; i >= 0; i--)
{
maxLength = 0;
for (j = i + 1; j < N; j++)
if (best[j] > best[i] && a[i] < a[j])
{
best[i] = best[j];
pre[i] = j;
}
best[i]++;
}
maxLength = 0;
for (i = 0; i < N; i++)
maxLength = max(maxLength, best[i]);
for (j = 0; best[j] != maxLength; j++);
ofstream g("scmax.out");
g << maxLength << '\n';
g << a[j] << " ";
for (i = 1; i < maxLength; i++)
{
g << a[pre[j]] << " ";
j = pre[j];
}
return 0;
}