Cod sursa(job #2414315)

Utilizator liviu2000Dragomirescu Liviu liviu2000 Data 24 aprilie 2019 14:40:40
Problema Subsir crescator maximal Scor 65
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.87 kb
#include <bits/stdc++.h>
#define N 100005

using namespace std;

ifstream fin("scmax.in") ;
ofstream fout("scmax.out") ;

vector<int> graf[N] ;
int t[N] ;

int main()
{
    int n , i , j , mx ;
    fin >> n ;
    for ( i = 1 ; i <= n ; i++ )
        fin >> t[i] ;
    t[0] = 0 ;
    graf[0].push_back(0) ;
    graf[1].push_back(t[1]) ;
    mx = 1 ;
    for ( i = 2 ; i <= n ; i++ )
    {
        for ( j = mx ; j >= 0 ; j-- )
        {
            if ( graf[j][0] < t[i] )
            {
                graf[j+1].push_back(t[i]) ;
                if ( j == mx )
                    mx++ ;
                if ( graf[j+1][0] > t[i] )
                    swap(graf[j+1][0],graf[j+1][graf[j+1].size()-1]) ;
                break ;
            }
        }
    }
    fout << mx << '\n' ;
    for ( i = 1 ; i <= mx ; i++ )
        fout << graf[i][0] << " " ;
}