Cod sursa(job #669260)

Utilizator alexalbu95Albu Alexandru alexalbu95 Data 26 ianuarie 2012 17:52:34
Problema Subsir crescator maximal Scor 40
Compilator cpp Status done
Runda Arhiva educationala Marime 0.82 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;
long a[maxn];

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

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

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

    for(i=2; i<=n; ++i)
    {
        maxim=0;
        p=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";
    return p;
}

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

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