Cod sursa(job #669263)

Utilizator alexalbu95Albu Alexandru alexalbu95 Data 26 ianuarie 2012 18:00:06
Problema Subsir crescator maximal Scor 70
Compilator cpp Status done
Runda Arhiva educationala Marime 0.85 kb
#include <fstream>
using namespace std;
ifstream f("scmax.in");
ofstream g("scmax.out");
const int maxn=100005;
int n, d[maxn], b[maxn], M, x, p;
long a[maxn];

void read()
{
    f>>n;
    for(int i=1; i<=n; ++i) f>>a[i];
}

void scmax()
{
    int i, j, maxim;

    b[1]=1;
    d[1]=0;
    p=0;

    for(i=2; i<=n; ++i)
    {
        maxim=0;

        for(j=1; j<i; ++j)
        {
            if(a[i]>a[j] && b[j]>maxim)
            {
                maxim=b[j];
                d[i]=j;
            }
        }
        b[i]=maxim+1;
        if(b[i]>M)
        {
            M=b[i];
            p=i;
        }
    }
    g<<M<<"\n";
    //g<<p<<"\n";
}

void afis(int i)
{
   if(d[i]>0) afis(d[i]);
   g<<a[i]<<" ";
}

int main()
{
    read();
    scmax();
    afis(p);
    //x=;
    //afis(scmax());
    g<<"\n";
}