Pagini recente » Cod sursa (job #2449824) | Cod sursa (job #1850613) | Cod sursa (job #3245872) | Cod sursa (job #2600874) | Cod sursa (job #2812353)
#include <fstream>
#define dmax 100001
using namespace std;
int N,X[dmax],DP[dmax],succ[dmax];
ifstream fin("scmax.in");
ofstream fout("scmax.out");
void read()
{
fin>>N;
for(int i=1; i<=N; i++)
fin>>X[i];
}
void subsir()
{
int mx=0;
for(int i=N; i>=1; i--)
{
mx=0;
for(int j=i+1; j<=N; j++)
if(X[j]>X[i]&&DP[j]>mx)
mx=DP[j],succ[i]=j;
DP[i]=mx+1;
}
}
void afis()
{
int mx=0,p;
for(int i=1; i<=N; i++)
if(DP[i]>mx)
mx=DP[i],p=i;
fout<<mx<<'\n';
while(mx)
{
fout<<X[p]<<' ';
p=succ[p],mx--;
}
}
int main()
{
read();
subsir();
afis();
return 0;
}