Pagini recente » Cod sursa (job #2184131) | Cod sursa (job #2247325) | Cod sursa (job #827225) | Cod sursa (job #128581) | Cod sursa (job #2429356)
#include <fstream>
#include <queue>
using namespace std;
const int nmax = 100005;
ifstream fin("scmax.in");
ofstream fout("scmax.out");
int n, v[nmax], dp[nmax], poz[nmax], maxim, sol[nmax], k;
int main()
{
fin >> n;
for(int i = 1; i <= n; ++i)
fin >> v[i];
for(int i = 1; i <= n; ++i)
{
dp[i] = 1;
for(int j = 1; j < i; ++j)
if(dp[j] + 1 > dp[i] && v[j] < v[i])
{
dp[i] = dp[j] + 1;
poz[i] = j;
}
}
for(int i = 1; i <= n; ++i)
{
if(dp[i] > dp[maxim])
maxim = i;
}
fout << dp[maxim] << "\n";
while(maxim > 0)
{
sol[++k] = v[maxim];
maxim = poz[maxim];
}
for(int i = k; i >= 1; i--)
fout << sol[i] << " ";
return 0;
}