Cod sursa(job #884564)

Utilizator mirceadinoMircea Popoveniuc mirceadino Data 21 februarie 2013 00:28:31
Problema Subsir 2 Scor 45
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.65 kb
#include<cstdio>
#include<algorithm>
#define oo 1<<30
#define NMAX 5000+5
using namespace std;
int a[NMAX],p[NMAX],t[NMAX],i,j,n,sol;
int main()
{
    freopen("subsir2.in","r",stdin);
    freopen("subsir2.out","w",stdout);
    scanf("%d",&n);
    for(i=1;i<=n;i++)
    {
        scanf("%d",&a[i]);
        t[i]=oo;
        j=lower_bound(t+1,t+i+1,a[i])-t;
        t[j]=a[i];
        p[i]=j;
        sol=max(sol,j);
    }
    for(i=n,j=sol;i>=1 && j>=1;i--)
    {
        if(p[i]==j)
        {
            t[j]=i;
            j--;
        }
    }
    printf("%d\n",sol);
    for(i=1;i<=sol;i++) printf("%d ",t[i]);
    return 0;
}