Pagini recente » Cod sursa (job #987120) | Cod sursa (job #2212762) | Istoria paginii utilizator/strezea_gabriela_323cb | Cod sursa (job #2492230) | Cod sursa (job #1430033)
#include <iostream>
#include <fstream>
#include <stdlib.h>
#include <stdio.h>
using namespace std;
int vec[100000];
int lungimi[100000];
int tati[100000];
int main()
{
FILE *f = fopen("scmax.in", "r");
FILE *g = fopen("scmax.out", "w");
//ifstream f("scmax.in");
//ofstream g("scmax.out");
int n;
//f >> n;
fscanf(f, "%d\n", &n);
for(int i = 0; i < n; i++)
//f >> vec[i];
fscanf(f, "%d ", &vec[i]);
int lung = 0;
int idx = -1;
for(int i = n - 1; i >= 0; i--)
{
lungimi[i] = 1;
for(int j = i + 1; j < n; j++)
if((vec[i] < vec[j]) && (lungimi[i] < lungimi[j] + 1))
{
lungimi[i] = lungimi[j] + 1;
tati[i] = j;
}
if(lung < lungimi[i])
{
lung = lungimi[i];
idx = i;
}
}
fprintf(g, "%d\n", lung);
// g << lung <<endl;
do
{
// g << vec[idx] << " ";
fprintf(g, "%d ", vec[idx]);
idx = tati[idx];
}
while(idx != 0);
//g << '\n';
fprintf(g, "\n");
fclose(f);
fclose(g);
// f.close();
// g.close();
return 0;
}