Cod sursa(job #2299850)

Utilizator robertbirsanRobert Birsan robertbirsan Data 10 decembrie 2018 11:48:11
Problema Subsir crescator maximal Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.74 kb
#include <bits/stdc++.h>

using namespace std;

ofstream g("scmax.out");
int a[100007],x[100007],t[100007],n,i,j,s,p,u,m;

void afis(int m)
{
    if(m)
    {
        afis(t[m]);
        g<<a[m]<<" ";
    }
}
int main()
{ ifstream f("scmax.in");
f>>n;
for(i=1;i<=n;i++)
    f>>a[i];
x[1]=1;
p=1;
s=1;// in s tin lungimea subsirului crescator
for(i=2;i<=n;++i)
{
    p=1;
    u=s;
    while(p<=u)// cautare binara p este primul element, u este ultimul element
    {
        m=(u+p)/2; //m este mijlocul
        if(a[i]>a[x[m]])
            p=m+1;
        else
            u=m-1;
    }
    if(p>s)
        s++;
x[p]=i;
t[i]=x[p-1];
}
g<<s<<"\n";
afis(x[s]);
// for(i=1;i<=n;i++)
// g<<a[x[i]]<<" ";
    return 0;
}