Pagini recente » Cod sursa (job #1765869) | Cod sursa (job #2226950) | Cod sursa (job #1409909) | Cod sursa (job #2392379) | Cod sursa (job #1189627)
#include <iostream>
#include <fstream>
using namespace std;
ifstream f("scmax.in");
ofstream g("scmax.out");
int p,n,k;
int a[100001],pred[100001];
int i, dp[100001];
#define cout g
int j,b[1000001];
int main()
{
f>>p>>n;
for(i=1; i<=n; i++)
{
f>>a[i];
dp[i]=1;
}
for(i=1; i<=n; i++)
{
for(j=i+1; j<=n; j++)
if(a[j]>a[i])
if(dp[j]<dp[i]+1)
{
dp[j]=dp[i]+1;
pred[j]=i;
}
}
int maxi=-1;
int pos=0;
for(i=1; i<=n; i++)
{
if(dp[i]>maxi)
{
maxi=dp[i];
pos=i;
}
}
cout<<maxi<<'\n';
while(pos)
{
b[++k]=a[pos];
pos=pred[pos];
}
for(i=k;i>0;--i)
cout<<b[i]<<" ";
return 0;
}