Pagini recente » Cod sursa (job #2422934) | Cod sursa (job #2624397) | Cod sursa (job #2719009) | Cod sursa (job #2063635) | Cod sursa (job #1353572)
#include <fstream>
using namespace std;
ifstream fin("scmax.in");
ofstream fout("scmax.out");
int n,a[100001],m[100001],scm[100001];
#define inf 2000000002
void citire()
{
int i;
fin>>n;
for(i=1;i<=n;i++)
fin>>a[i];
}
void afis(int lscm,int poz)
{
int i;
fout<<a[poz]<<" ";
lscm--;
while(lscm)
{
i=poz;
while(scm[i]!=lscm)
i++;
poz=i;
fout<<a[poz]<<" ";
lscm--;
}
}
void rez()
{
scm[n]=1;
m[1]=a[n];
m[0]=inf;
int lscm=1,poz,i;
for(i=n-1;i;i--)
{
int t=lscm;
while(a[i]>=m[t])
t--;
scm[i]=t+1;
m[scm[i]]=max(m[scm[i]],a[i]);
if(lscm<scm[i])
{
poz=i;
lscm=scm[i];
}
}
fout<<lscm<<endl;
afis(lscm,poz);
}
int main()
{
citire();
rez();
return 0;
}