Cod sursa(job #1981653)

Utilizator cipri321Marin Ciprian cipri321 Data 16 mai 2017 12:58:45
Problema Subsir crescator maximal Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.81 kb
#include <fstream>
#include <algorithm>
using namespace std;
ifstream fi("scmax.in");
ofstream fo("scmax.out");
int n,V[100001],A[100001],a,x,P[100001]={-1};
bool compar(int a,int b)
{
    if(V[a]<V[b])
        return true;
    return false;
}
void afisare(int n)
{
    if(P[n]>0)
        afisare(P[n]);
    fo<<V[n]<<" ";
}
int main()
{
    fi>>n;
    for(int i=1;i<=n;i++)
        fi>>V[i];
    for(int i=1;i<=n;i++)
    {
        int *p=lower_bound(A+1,A+a+1,i,compar);
        if(V[A[p-A]]==V[i])
            continue;
        if(p==A+a+1)
        {
            P[i]=A[a];
            A[++a]=i;
        }
        else
        {
            P[i]=A[p-A-1];
            A[p-A]=i;
        }
    }
    fo<<a<<"\n";
    afisare(A[a]);
    fi.close();
    fo.close();
    return 0;
}