Cod sursa(job #2949184)

Utilizator maria_neagoieMaria Neagoie maria_neagoie Data 30 noiembrie 2022 09:20:58
Problema Subsir crescator maximal Scor 65
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.86 kb
#include <cstdio>
#include <vector>
using namespace std;
const int NMAX=100005;
int v[NMAX],lis=1;
vector <int> temp;
vector <int> :: iterator it;
void LIS(int v[],int n)
{
    int i,ind;
    temp.push_back(v[1]);
    for(i=2;i<=n;i++)
    {
        if(v[i]>temp.back())
        {
            temp.push_back(v[i]);
            lis++;
        }
        else
        {
            ind=lower_bound(temp.begin(),temp.end(),v[i])-temp.begin();
            temp[ind]=v[i];
        }
    }
}
int main()
{
    freopen("scmax.in","r",stdin);
    freopen("scmax.out","w",stdout);
    int n,i;
    scanf("%d",&n);
    for(i=1;i<=n;i++)
        scanf("%d",&v[i]);
    LIS(v,n);
    printf("%d",lis);
    printf("\n");
    for(it=temp.begin();it!=temp.end();it++)
        printf("%d ",(*it));
    fclose(stdin);
    fclose(stdout);
    return 0;
}