Cod sursa(job #3346508)

Utilizator paul.papatoiuPaul Papatoiu paul.papatoiu Data 14 martie 2026 08:43:08
Problema Subsir crescator maximal Scor 0
Compilator c-64 Status done
Runda Arhiva educationala Marime 1.2 kb
#include <stdio.h>

int maxj (int *v, int j) {
    int max = 0;
    for (int i = 1; i <= j; i++)
        if(v[i] > max)
            max = v[i];
    return max;
}
int main()
{
    FILE *fin = fopen("scmax.in", "r");
    FILE *fout = fopen("scmax.out", "w");

    int n; 
    int v[101];

    fscanf(fin, "%d", &n);
    for (int i = 1; i <= n; i++) {
        fscanf(fin, "%d", &v[i]);
    }
    
    
    int dp[101] = {0};
    dp[1] = 1;
    int cnt = 0;
    for (int i = 2; i <= n; i++)
        for (int j = 1; j < i; j++)
            if (v[j] < v[i]) {
                dp[i] = 1 + maxj(dp, j);
            }
            
    
    int max = 0;
    for (int i = 1; i <= n; i++)
        if (dp[i] > max) {
            //fprintf(fout, "%d ", v[i]);
            max = dp[i];
            cnt++;
        }
        
    max = 0;
    fprintf(fout, "%d\n", cnt);
    int j;
    for (j = 1; j <= n && dp[j] <= 1; j++);
    j--;
    if (j == n)
        fprintf(fout, "%d ", v[j]);
    else {
        fprintf(fout, "%d ", v[j]);
        max = 1;
    }
    
    for (int i = 1; i <= n; i++)
        if (dp[i] > max) {
            fprintf(fout, "%d ", v[i]);
            max = dp[i];
        }
    fclose(fin);
    fclose(fout);

    return 0;
}