Pagini recente » Cod sursa (job #2979986) | Cod sursa (job #2138691) | Cod sursa (job #1132925) | Cod sursa (job #547122) | Cod sursa (job #1713109)
#include <cstdio>
#include <algorithm>
#define MAX 2000000
using namespace std;
char f[MAX];
int pos=0,size[100005]={},bef[100005]={},N,v[100005]={};
void r(int &nr)
{
nr=0;
while(f[pos]<'0'||f[pos]>'9')
pos++;
while(f[pos]>='0'&&f[pos]<='9')
nr=nr*10+f[pos++]-'0';
}
int main()
{
freopen("scmax.in","r",stdin);
freopen("scmax.out","w",stdout);
fread(f,1,MAX,stdin);
r(N);
for(int i=1;i<=N;i++)
r(v[i]);
for(int i=N;i>=0;i--)
{
int Max=0,mpos=0;
for(int j=i+1;j<=N;j++)
if(v[i]<v[j]&&Max<size[j])
{
Max=size[j];
mpos=j;
}
size[i]=Max+1;
bef[i]=mpos;
}
int i=0;
printf("%d\n",size[1]);
while(bef[i]>0)
{
printf("%d ",v[bef[i]]);
i=bef[i];
}
return 0;
}