Cod sursa(job #2559544)

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

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

adat x[100000001];
vector<int>y;
int i,j,maxi,p,poz;
long long n;

int main()

{
    FILE * pfile;
    pfile = fopen ("scmax.in","r");

    maxi=0;
    fscanf(pfile,"%d",&n);

    for(i=1;i<=n;++i)
    {
        fscanf(pfile,"%d",&x[i].nr);
        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;

                if(x[i].maxi>maxi)
                {
                maxi=x[i].maxi;
                poz=i;
                }
            }
    }

    cout<<maxi<<endl;
    p=maxi;

    for(i=poz;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;
}