Pagini recente » Cod sursa (job #850925) | Cod sursa (job #1321706) | Cod sursa (job #718409) | Cod sursa (job #249783) | Cod sursa (job #1713111)
#include <cstdio>
#include <algorithm>
#define MAX 2000000
using namespace std;
char f[MAX];
int pos=0,size[100005]={},bef[100005]={},N,v[100005]={},L;
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-1;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;
if(size[L]<size[i])L=i;
bef[i]=mpos;
}
int i=L;
printf("%d\n",size[L]);
while(bef[i]>0)
{
printf("%d ",v[bef[i]]);
i=bef[i];
}
return 0;
}