Cod sursa(job #2187387)

Utilizator FunnyStockyMihnea Andreescu FunnyStocky Data 26 martie 2018 14:43:30
Problema Subsir crescator maximal Scor 25
Compilator cpp Status done
Runda Arhiva educationala Marime 0.71 kb
#include <fstream>
#include <algorithm>

using namespace std;

ifstream fin("scmax.in");
ofstream fout("scmax.out");

const int N=100000;
int n;
int v[N+5],dp[N+5];

int main()
{
    fin>>n;
    for(int i=1;i<=n;i++)
    {
        fin>>v[i];
        dp[i]=(1<<30);
    }
    for(int i=1;i<=n;i++)
    {
        int r=0,pas=(1<<17);
        while(pas)
        {
            if(r+pas<=n && dp[r+pas]<v[i])
                r+=pas;
            pas/=2;
        }
        dp[r+1]=min(dp[r+1],v[i]);
    }
    int nr=0;
    for(int j=n;j>=1;j--)
    {
        if(dp[j]!=(1<<30))
        {
            nr=j;
            break;
        }
    }
    fout<<nr<<"\n";
    for(int i=1;i<=nr;i++)
        fout<<dp[i]<<" ";
    return 0;
}
/**
**/