Pagini recente » Istoria paginii runda/10.1/clasament | Cod sursa (job #1012893) | Cod sursa (job #1209043) | Cod sursa (job #2181043) | Cod sursa (job #895968)
Cod sursa(job #895968)
#include<fstream>
using namespace std;
ifstream f("scmax.in"); ofstream g("scmax.out");
int n, a[100009], best[100009], pre[100009], maxim, poz;
int main()
{
f >> n;
for(int i = 1; i <= n; ++i) f >> a[i];
for(int i = n; i >= 1; --i)
{
best[i] = 1;
pre[i] = -1;
for(int j = i + 1; j <= n; ++j)
if(a[i] < a[j] && best[i] < best[j] + 1)
{
best[i] = best[j] + 1;
pre[i] = j;
if(best[i] > maxim) maxim = best[i], poz = i;
}
}
int i;
g<<maxim<<'\n';
for(i = poz; pre[i] != -1; i = pre[i])
g<<a[i]<<' ';
g<<a[i]<<'\n';
g.close();
return 0;
}