Pagini recente » Cod sursa (job #827970) | Cod sursa (job #2140467) | Cod sursa (job #1422503) | Cod sursa (job #2622407) | Cod sursa (job #2261378)
#include <bits/stdc++.h>
using namespace std;
ifstream fin("scmax.in");
ofstream fout("scmax.out");
int v[100010],sol[100010],urm[100010],maxim,n,pozmax;
void citire();
void rezolvare();
void afisare(int poz);
int main()
{
citire();
rezolvare();
return 0;
}
void citire()
{
int i;
fin >> n;
for(i=1; i<=n; i++)
fin >> v[i];
}
void rezolvare()
{
int i,k;
sol[n]=1;
k=n-1;
for(k=n-1; k>=1; k--)
{
for(i=k; i<=n; i++)
{
if(v[k]<v[i] && sol[k]<sol[i]+1)
{
sol[k]=sol[i]+1;
urm[k]=i;
}
}
}
for(i=1;i<=n;i++)
if(sol[i]>maxim)
maxim=sol[i],pozmax=i;
fout << maxim << '\n';
afisare(pozmax);
}
void afisare(int poz)
{
int i;
if(poz==0)
return;
fout << v[poz] << ' ';
afisare(urm[poz]);
}