Cod sursa(job #721532)

Utilizator cernat.catallinFMI Cernat Catalin Stefan cernat.catallin Data 23 martie 2012 19:28:43
Problema Subsir crescator maximal Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.87 kb
#include <fstream>
using namespace std;
#define nmax 100001
ifstream f ("scmax.in");
ofstream g ("scmax.out");

int best[nmax],poz[nmax],a[nmax],l[nmax],n,max;

int cauta(int i)
{
    int max=0,p,j;
    for(j=1;j<i;j++)
        if(max<best[j] && a[j]<a[i]) max=best[j],p=j;
    return p;
}
void dinamic()
{
    int i;
    best[0]=0;
    for(i=1;i<n;i++)
    {
        int p;
        p=cauta(i);
        best[i]=best[p]+1;
        poz[i]=p;
    }
}
void afisare2(int p, int max)
{
    if(max>0) {afisare2(poz[p],max-1);}
    g<<a[p]<<" ";
}
void afisare()
{
    g<<best[n-1]<<"\n";
    int max=0,p=0,i;
    for(i=0;i<n;i++)
    {
        if(max<best[i]) max=best[i],p=i;
    }
    afisare2(p,max-1);
    g.close();
}
int main()
{
    int i;
    f>>n;
    for(i=0;i<n;i++) f>>a[i];
    f.close();
    dinamic();
    afisare();
    return 0;
}