Pagini recente » Cod sursa (job #2267603) | Cod sursa (job #2672252) | Cod sursa (job #1091835) | Cod sursa (job #868515) | Cod sursa (job #1987418)
#include <fstream>
using namespace std;
ifstream f("scmax.in");
ofstream g("scmax.out");
int a[100001], l[100001], poz[100001], n, p, maxi;
void ReadData()
{
f >> n;
int i;
for(i = 1; i <= n; i++)
f >> a[i];
}
void Solve()
{
maxi = 1, p = n;
l[n] = 1;
poz[n] = -1;
int i, j;
for(i = n - 1; i > 0; i--)
{
l[i] = 1;
poz[i] = -1;
for(j = i + 1; j <= n; j++)
if(a[i] < a[j] and l[i] < l[j] + 1)
{
l[i] = l[j] + 1;
poz[i] = j;
if(l[i] > maxi)
{
maxi = l[i];
p = i;
}
}
}
}
void WriteData()
{
g << l[p] << '\n';
int i = p;
while(i != -1)
{
g << a[i] << ' ';
i = poz[i];
}
}
int main()
{
ReadData();
Solve();
WriteData();
}