Cod sursa(job #1274091)

Utilizator fluture.godlikeGafton Mihnea Alexandru fluture.godlike Data 23 noiembrie 2014 12:13:17
Problema Subsir crescator maximal Scor 65
Compilator cpp Status done
Runda Arhiva educationala Marime 0.77 kb
#include <stdio.h>
#include <algorithm>
FILE *fin, *fout;
int n, *p, *min, max;
const int NMAX = 2000000002;
int main()
{
    fin = fopen("scmax.in", "r");
    fout = fopen("scmax.out", "w");
    fscanf(fin, "%d", &n);
    p = new int[n];
    for(int i =0; i< n; i++) fscanf(fin, "%d", &p[i]);
    min = new int[n+1];
    for(int i =1; i< n+1; i++) min[i] = NMAX;
    min[0] = 0;
    for(int i = 0; i< n; i++)
    {
            int k = std::lower_bound(min, min+n+1, p[i]) - min;
            min[k] = p[i];
            p[i] = k;
    }
    for(int i =0; i< n; i++) if(p[i] > max) max = p[i];
    fprintf(fout, "%d\n", max);
    for(int i =1; i <=  max; i++) fprintf(fout, "%d ", min[i]);
    fprintf(fout, "\n");
    fclose(fin);
    fclose(fout);
    return 0;
}