Cod sursa(job #1113610)

Utilizator bogdanpaunFMI Paun Bogdan Gabriel bogdanpaun Data 20 februarie 2014 19:19:43
Problema Subsir crescator maximal Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.67 kb
#include <stdio.h>
#include <algorithm>
using namespace std;
#define nMax 100005
const int INF=(1<<31)-1;

int N,A[nMax],Q[nMax],p[nMax],SOL,S[nMax];


int main()
{
    freopen("scmax.in","r",stdin);
    scanf("%d",&N);
    register int poz;
    for(register int i=1;i<=N;++i){
        scanf("%d",&A[i]);
        Q[i]=INF;
        poz= lower_bound( Q+1 , Q+i+1 , A[i] ) - Q;
        Q[poz] = A[i]; p[ i ] = poz;
        SOL=max(SOL,poz);
    }
    freopen("scmax.out","w",stdout);
    int i;
    for(poz=SOL, i=N;i && poz;i--)
        if(p[i]==poz) S[poz--]=A[i];
    printf("%d\n",SOL);
    for(i=1;i<=SOL;i++) printf("%d ",S[i]);


    return 0;
}