Cod sursa(job #2690195)

Utilizator teochess2017Togan Teodor-Bogdan teochess2017 Data 23 decembrie 2020 13:19:36
Problema Subsir crescator maximal Scor 70
Compilator c-64 Status done
Runda Arhiva educationala Marime 0.96 kb
#include <stdio.h>
#include <stdlib.h>

#define MAXN 100000
#define MAXVAL 2000000000

int v[MAXN][2], out[MAXN];

int main()
{
    FILE *fin, *fout;
    int n, i, j, max, cmax, unr;
    fin = fopen("scmax.in", "r");
    fscanf(fin, "%d", &n);
    for(i = 0; i < n; i++){
      fscanf(fin, "%d", &v[i][0]);
    }
    fclose(fin);
    max = 0;
    for(i = 0; i < n; i++){
      for(j = 0; j < i; j++){
        if((v[i][1] < v[j][1]) && (v[j][0] < v[i][0])){
          v[i][1] = v[j][1];
        }
      }
      v[i][1]++;
      if(max < v[i][1]){
        max = v[i][1];
      }
    }
    fout = fopen("scmax.out", "w");
    fprintf(fout, "%d\n", max);
    cmax = max;
    unr = MAXVAL;
    for(i = n - 1; 0 <= i; i--){
      if((v[i][1] == cmax) && (v[i][0] < unr)){
        unr = out[cmax - 1] = v[i][0];
        cmax--;
      }
    }
    for(i = 0; i < max; i++){
      fprintf(fout, "%d ", out[i]);
    }
    fclose(fout);
    return 0;
}