Cod sursa(job #2558174)

Utilizator ND2003David Nagy ND2003 Data 26 februarie 2020 13:11:13
Problema Subsir crescator maximal Scor 30
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.21 kb
#include <fstream>
#include <stdlib.h>
#include <vector>
#include <algorithm>

using namespace std;

struct ki_van_a_faszom
{
    vector<int>y;
};

vector<ki_van_a_faszom>x;
int index;

int lis(int arr[], int n)
{
    int *lis, i, j, maxi = 0;
    lis = (int*)malloc(sizeof(int) * n);

    for (i=0; i<n; i++)
        lis[i]=1;

    x.resize(n);
    for (i=0;i<n;i++)
    {
        x[i].y.push_back(arr[i]);
        for (j = 1; j <=i; j++)
            if (arr[i]>arr[j] && lis[i]<lis[j]+1)
            {
                lis[i]=lis[j]+1;
                x[i].y.push_back(arr[j]);
            }
            if (maxi<lis[i])
        {
            maxi=lis[i];
            index=i;

        }
    }

    free(lis);

    return maxi;
}

int main()
{
    ifstream fasz("scmax.in");
    ofstream cout("scmax.out");
    int arr[10001],n;
    fasz>>n;
    for(int i=1;i<=n;++i)
        fasz>>arr[i];

    cout<<lis(arr,n)<<endl;
    sort(x[index].y.begin(), x[index].y.end());
    for(auto e:x[index].y)
       cout<<e<<" ";

   /*for(int i=1;i<n;++i)
    {
        cout<<i<<":\n";
        for(auto e:x[i].y)
            cout<<e<<" ";
        cout<<endl;
    }*/
    return 0;
}