Cod sursa(job #873654)

Utilizator miha88Popescu Mihaela miha88 Data 7 februarie 2013 15:25:51
Problema Subsir crescator maximal Scor 60
Compilator cpp Status done
Runda Arhiva educationala Marime 0.74 kb
#include <fstream>
using namespace std;
ifstream f("scmax.in");
ofstream g("scmax.out");
int n,i,k,p,x[100002],v[100002],l[100002],max1;
int pozitie(int p, int u, int a)
{
    int mij;
    while (p<=u)
    {
        mij=(u-p)/2+p;
        if(a==v[mij])
            return mij;
        if(a<v[mij])
            u=mij-1;
        if(a>v[mij])
            p=mij+1;
    }
    return p;
}
int main()
{
    f>>n;
    // k=0 -> numarul de elemente din v
    for(i=1;i<=n;i++)
    {
        f>>x[i];
        p=pozitie(1,k,x[i]);
        v[p]=x[i];
        if(p>=k)
            k=p;
        l[i]=p;
        if(k>max1)
            max1=k;
    }
    g<<max1<<'\n';
    for(i=1;i<=k;i++)
        g<<x[i]<<' ';
    return 0;
}