Cod sursa(job #2573725)

Utilizator dsandru89Sandru Daniel Cornel dsandru89 Data 5 martie 2020 18:53:26
Problema Subsir crescator maximal Scor 20
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.13 kb
#include <iostream>
#include <fstream>
#include <vector>
using namespace std;
ifstream fin("scmax.in");
ofstream fout("scmax.out");

int sir[100000000],l[100000000],n=0,maximG=0,poz,nr=1;

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(){int poz1,maximD;
          poz1=poz;maximD=maximG-1;
    for(int i=poz1+1;i<=n;i++)
     {   if(sir[i]>sir[poz1])
         if(l[i]==maximD){nr+=1;maximD--;}
         poz1=i-1;
     }
     fout<<nr<<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;
}