Pagini recente » Cod sursa (job #1525945) | Cod sursa (job #390045) | Cod sursa (job #2449061) | Cod sursa (job #481831) | Cod sursa (job #1982843)
#include <iostream>
#include<stdio.h>
int v[100001], s[100001], r[100001];
using namespace std;
int main() {
FILE *fin, *fout;
int max, i, n, j, x, elem, s1, s2, maxim, poz, caut, valmax, cont;
fin=fopen("scmax.in", "r");
fout=fopen("scmax.out", "w");
fscanf( fin, "%d", &n);
for(i=1;i<=n;i++) {
fscanf( fin, "%d", &v[i]);
maxim=0;
for(j=1;j<=i;j++) {
if(v[j]<v[i]) {
if(s[j]>maxim) {
maxim=s[j];
}
}
}
s[i]=maxim+1;
}
max=0;
for(i=1;i<=n;i++) {
if(s[i]>max) {
max=s[i];
poz=i;
}
}
fprintf( fout, "%d\n", max);
caut=max-1;
valmax=v[poz];
r[max]=valmax;
cont=max-1;
for(i=poz-1;i>=1;i--) {
if(s[i]==caut) {
if(v[i]<valmax) {
r[cont]=v[i];
valmax=v[i];
caut--;
cont--;
}
}
}
for(i=1;i<=max;i++) {
fprintf( fout, "%d ", r[i]);
}
fclose( fin );
fclose( fout );
return 0;
}