Cod sursa(job #2573751)

Utilizator dsandru89Sandru Daniel Cornel dsandru89 Data 5 martie 2020 18:59:54
Problema Subsir crescator maximal Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.96 kb
#include <iostream>
#include <fstream>
#include <vector>
using namespace std;
ifstream fin("scmax.in");
ofstream fout("scmax.out");
const int nmax=200000000;
long long sir[nmax],l[nmax],n=0,maximG=0,poz;

void citire(){
    int x;
   while(fin>>x){n++;sir[n]=x;}
}

void formare(){
     int i,j,maxim;
      l[n]=1;
     for(i=n-1;i>=1;i--){maxim=0;
            for(j=i+1;j<=n;j++){
                        if(sir[i]<sir[j])
                            if(maxim<=l[j])maxim=l[j];
                        l[i]=maxim+1;
            }
            if(maximG<l[i]){maximG=l[i];poz=i;}
     }
}

void afisare(){
     fout<<maximG<<endl;
    fout<<sir[poz]<<" ";maximG--;
     for(int i=poz+1;i<=n;i++)
     {   if(sir[i]>sir[poz])
         if(l[i]==maximG){fout<<sir[i]<<" ";maximG--;}
         poz=i-1;
     }
}




int main()
{  citire();
formare();
for(int i=1;i<=n;i++)
     {
        cout<<l[i]<<" ";
     }
afisare();

    return 0;
}