Pagini recente » Cod sursa (job #2753157) | Cod sursa (job #1888463) | Cod sursa (job #643433) | Cod sursa (job #856698) | Cod sursa (job #1214396)
#include <iostream>
#include <fstream>
#include <assert.h>
using namespace std;
ifstream fin("scmax.in");
ofstream fout("scmax.out");
int n,a[100000],i,ma[100000],s,j,c[10000][10000],m[100000],b;
void citire()
{fin>>n;
assert (n<=100000);
for(i=1;i<=n;i++)
{fin>>a[i];
assert(a[i]<=2000000);
}
}
void formare()
{
for(i=1;i<=n;i++)
{ma[i]=1;
s=i;
for(j=i;j<=n;j++)
{if(j==i)
c[i][1]=a[i];
if(a[s]<a[j])
{c[i][ma[i]]=a[j-1];
ma[i]++;
s++;
}
if(j==n && a[s]<a[j])
c[i][ma[i]]=a[n];
}
}
for(i=1;i<=n;i++)
for(j=1;j<=n;j++)
if(c[i][j]!=0)
m[i]=m[i]+1;
for(i=1;i<=n;i++)
if(m[i]<m[i+1])
b=i+1;
}
int main()
{
citire();
formare();
fout<<ma[b];
fout<<"\n";
for(i=1;i<=n;i++)
{if(c[b][i]!=0)
fout<<c[b][i]<<" ";
}
return 0;
}