Cod sursa(job #1621922)

Utilizator DaniellDa Vinci Daniell Data 29 februarie 2016 22:59:27
Problema Subsir crescator maximal Scor 15
Compilator cpp Status done
Runda Arhiva educationala Marime 0.78 kb
#include <fstream>

using namespace std;

ifstream fin("scmax.in");
ofstream fout("scmax.out");
int n,i,a[200000],l[200000],maxx,start,refer,st[200000];
void citire()
{fin>>n;
for(i=1;i<=n;i++)
    fin>>a[i];
fin.close();
}
void cautare()
{int j=1;
while(j<=n)
{refer=a[j];
    for(i=j-1;i>=1;i--)
{if(a[i]<refer){
    l[j]++;
refer=a[i];
st[j]=i;}
}

l[j]++;
j++;
}
}
void maxim()
{maxx=-2;
for(i=1;i<=n;i++){
        if(l[i]>maxx)
        {maxx=l[i];
start=i;}
}

}
void scriere()
{
    fout<<maxx<<"\n"<<a[st[maxx]]<<" ";refer=a[st[maxx]];maxx--;
   for(i=++st[maxx+1];maxx>0;i++)
   {
     if(a[i]>refer)
        {fout<<a[i]<<" ";
     refer=a[i];
     maxx--;}
   }
}
int main()
{
    citire();
    cautare();
    maxim();
    scriere();
}