Cod sursa(job #2559501)

Utilizator ND2003David Nagy ND2003 Data 27 februarie 2020 12:49:46
Problema Subsir crescator maximal Scor 70
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1 kb
#include <fstream>
#include <vector>

using namespace std;
//ifstream fin("scmax.in");
ofstream cout("scmax.out");
struct adat
{
    int nr,maxi,help;
};

vector<adat>x;
vector<int>y;
int i,j,maxi,p;
long long n;

int main()

{
    FILE * pfile;

    pfile = fopen ("scmax.in","r");
    maxi=0;
    fscanf(pfile,"%d",&n);
    x.resize(n+1);

    for(i=1;i<=n;++i)
        fscanf(pfile,"%d",&x[i].nr);

    for(i=1;i<=n;++i)
        x[i].maxi=1;


    for(i=1;i<=n;++i)
    {
            for(j=i-1;j>=1;j--)
            if(x[i].nr>x[j].nr && x[j].maxi+1>x[i].maxi)
            {
                x[i].help=j;
                x[i].maxi=x[j].maxi+1;
            }
    }

    for(i=1;i<=n;++i)
        if(x[i].maxi>maxi) maxi=x[i].maxi;

    cout<<maxi<<"\n";
    p=maxi;

    for(i=n;i>=1;i--)
        if(x[i].maxi==p)
    {
        p--;
        y.push_back(x[i].nr);

    }

   for(i=y.size()-1;i>=0;--i)
        cout<<y[i]<<" ";
    fclose(pfile);

    return 0;
}