Cod sursa(job #1080552)

Utilizator vlcmodanModan Valentin vlcmodan Data 12 ianuarie 2014 16:51:48
Problema Subsir crescator maximal Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.84 kb
#include <fstream>
#define MAX 100005
using namespace std;
 
ifstream f("scmax.in");
ofstream g("scmax.out");
 
int v[MAX], best[MAX], prec[MAX], secv[MAX], seq_len, n;
int cautb(int x)
{
    int st,dr,m;
    st=0;
    dr=seq_len;
    m=(st+dr)/2;
    while(st<=dr)
    {
        if(v[secv[m]]<x)
            st=m+1;
        else
            dr=m-1;
        m =(st+dr)/2;
    }
    return m;
}
 
void afis(int poz)
{
    if(prec[poz]!=0) 
		afis(prec[poz]);
    g<<v[poz]<<" ";
}
 
int main()
{
    int i;
    f >> n;
    for(i=1;i<=n;i++)
        f>>v[i];
    secv[1]=1;
    seq_len=1;
    for(i=2;i<=n;i++)
	{
        int poz = cautb(v[i]);
        prec[i] = secv[poz];
        secv[poz+1] = i;
        if(poz==seq_len)
			seq_len ++;
    }
    g<<seq_len<<"\n";
    afis(secv[seq_len]);
    return 0;
}