Cod sursa(job #1170725)

Utilizator andrei_diaconuAndrei Diaconu andrei_diaconu Data 14 aprilie 2014 13:24:40
Problema Subsir crescator maximal Scor 65
Compilator cpp Status done
Runda Arhiva educationala Marime 0.82 kb
#include <fstream>
#define NMax 100001
using namespace std;
ifstream f("scmax.in");
ofstream g("scmax.out");
int n, v[NMax], p[NMax], q[NMax], st, dr, mij, ind, i, lsc, a[NMax], k;
int main()
{
    f>>n;
    for (i=1; i<=n; i++)
        f>>v[i];
    for (i=1; i<=n; i++) {
        st=1;
        dr=lsc;
        while (st<=dr) {
            mij=(st+dr)/2;
            if (q[mij] < v[i])
                st=mij+1;
            else {
                dr=mij-1;
                ind=mij;
            }
        }
        if (v[i] > q[lsc]) {
            q[++lsc]=v[i];
            p[++k]=lsc;
        }
        else {
            q[ind]=v[i];
            p[++k]=ind;
        }
    }
    g<<lsc<<"\n";
    for (i=k; i>=1; i--)
        if (a[p[i]] == 0)
            a[p[i]]=v[i];
    for (i=1; i<=lsc; i++)
        g<<a[i]<<" ";
    return 0;
}