Cod sursa(job #1161789)

Utilizator alexmisto423Alex Turdean alexmisto423 Data 31 martie 2014 14:17:11
Problema Subsir crescator maximal Scor 10
Compilator cpp Status done
Runda Arhiva educationala Marime 1.06 kb
#include <fstream>
using namespace std;
ifstream fin("scmax.in");
ofstream fout("scmax.out");
int j,n,a,b,i,maxi,rep,v[100001],w[100001],p[100001],f[100000],poz,ld,ls,mij,ok;
int main()
{
    fin>>n;
    for(i=1;i<=n;i++)
        fin>>v[i];
    w[1]=v[1];
    p[1]=1;
    poz=2;
    j=1;
    for(i=2;i<=n;i++)
    {
        if(v[i]>w[j])
            {
                j++;
                w[j]=v[i];
                p[poz]=j;
                poz++;
            }
        else
        {
            ls=1;ld=j;
            while(ls!=ld)
            {
                mij=(ls+ld)/2;
                if(v[i]<w[mij])
                    ld=mij-1;
                else
                    ls=mij+1;
            }
            w[ld]=v[i];
            p[poz]=ld;
            poz++;
        }
    }a=j;
    for(i=poz-1;i>0&&j!=0;i--)
 {
        if(p[i]==j)
        {
            f[j]=w[j];
            j--;
        }
 }

        fout<<a<<'\n';
 for(i=1;i<a;i++)
    fout<<f[i]<<" ";
    fout<<f[i];
fin.close();
fout.close();
return 0;
}