Pagini recente » Cod sursa (job #1376705) | Cod sursa (job #531048) | Cod sursa (job #1163925) | Cod sursa (job #1724316) | Cod sursa (job #1713115)
#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;i>0;i--)
{
size[i]=1,bef[i]=0;;
for(int j=i+1;j<=N;j++)
if(v[i]<v[j]&&size[i]<1+size[j])
{
size[i]=1+size[j];
bef[i]=j;
}
if(size[L]<size[i])L=i;
}
printf("%d\n%d ",size[L],v[L]);
while(bef[L]>0)
{
printf("%d ",v[bef[L]]);
L=bef[L];
}
return 0;
}