Cod sursa(job #1214396)

Utilizator witselWitsel Andrei witsel Data 30 iulie 2014 11:28:33
Problema Subsir crescator maximal Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 1 kb
#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;
}