Pagini recente » Cod sursa (job #3339704) | Cod sursa (job #3358358) | Cod sursa (job #3339706) | Cod sursa (job #3319912) | Cod sursa (job #3346508)
#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;
}