Cod sursa(job #2013898)

Utilizator Lazar_LaurentiuLazar Laurentiu Lazar_Laurentiu Data 22 august 2017 16:10:49
Problema Subsir crescator maximal Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.77 kb
#include <iostream>
#include <fstream>
#include <vector>
#define MAX 100001

using namespace std;

int n,a[MAX],nmax[MAX],smax,mmax[MAX];
vector<int> r;

int main()
{
    ifstream f ("scmax.in");
    ofstream g ("scmax.out");
    f>>n;
    for(int i=1;i<=n;i++){
      f>>a[i]; mmax[i]=1;
      for(int j=smax;j>=1;j--){
        if((a[i]<nmax[j]||nmax[j]==0)&&a[i]>nmax[j-1]){
          nmax[j]=a[i]; mmax[i]=j+1;
          if(j==smax) smax++;
          break;
        }
      }
      if(a[i]<nmax[0]||nmax[0]==0)nmax[0]=a[i];
      if(i==1)smax=1;
    }
    g<<smax<<'\n';
    for(int i=n,aj=smax;i>=1&&aj>=1;i--)
      if(mmax[i]==aj)r.push_back(a[i]),aj--;
    for(int i=r.size()-1;i>=0;i--)g<<r[i]<<" ";
    f.close ();
    g.close ();
    return 0;
}