Cod sursa(job #1244554)

Utilizator alexalghisiAlghisi Alessandro Paolo alexalghisi Data 17 octombrie 2014 19:26:21
Problema Subsir crescator maximal Scor 65
Compilator cpp Status done
Runda Arhiva educationala Marime 0.95 kb
#include <iostream>
#include <cstdlib>
#include <cmath>
#include <algorithm>
#include <cmath>
#include <fstream>
#include <cstring>
#include <bitset>
#include <stack>
#include <vector>
#include <map>
#include <set>

#define per pair<int,int>
#define x first
#define y second
#define DN 100013
#define DM 2000
using namespace std;

ifstream f("scmax.in");
ofstream g("scmax.out");

int v[DN],minn[DN],n,sz;
/// minn[ i ] = cel mai mic terment cu care se poate termina un subsir de lungime i


void solve(){

    memset(minn,127,sizeof(minn)); /// INF
    minn[0] = 0; /// sa putem continua cu orie sir
    f>>n;
    for(int i=1;i<=n;++i){

        f>>v[i];
        for(int j = sz ; j >= 0 ; --j)
            if(v[i] > minn[j]){

                minn[j+1] = min(minn[j+1],v[i]);
                sz = max(sz,j+1);
                break;
            }
    }
    g<<sz<<"\n";
    for(int i=1;i<=sz;++i)
        g<<minn[i]<<" ";
}

int main()
{
    solve();

    return 0;
}