Cod sursa(job #2321772)

Utilizator CristianaMelinceanuMelinceanu Cristiana CristianaMelinceanu Data 16 ianuarie 2019 17:04:37
Problema Subsir crescator maximal Scor 70
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.11 kb
#include <iostream>
#include <fstream>

using namespace std;

int main()
{
    ifstream f("scmax.in");
    ofstream g("scmax.out");
    int n;
    f>>n;
    int v[100000],t[100000];
    for(int i=1;i<=n;i++)
        f>>v[i];
    int d[100000];

    for(int i=1;i<=n;i++)
       {
           t[i]=0;
           d[i]=0;

       }
        d[1]=1;

    for(int i=2;i<=n;i++)
    {
        int maxx=1;
        for(int j=i-1;j>=1;j--)
        {

            if(d[j]+1>=maxx)
            {
                if(v[j]<v[i])
                {
                    maxx=d[j]+1;
                    t[i]=j;
                }
            }
        }
        d[i]=maxx;
    }
    int maxx=-1,pmax;
    for(int i=n;i>=1;i--)
        if(d[i]>maxx)
        {
            maxx=d[i];
            pmax=i;
        }
    int k=0,i=n;
    int sol[100000];
    g<<maxx<<endl;
    while(t[pmax]!=0)
     {
            sol[k++]=v[pmax];
            pmax=t[pmax];

    }
    sol[k++]=v[pmax];
    for(int i=k-1;i>=0;i--)
        g<<sol[i]<<" ";

    cout << "Hello world!" << endl;
    return 0;
}