Pagini recente » Cod sursa (job #737728) | Istoria paginii runda/ultimasansa | Cod sursa (job #3168069) | Cod sursa (job #811366) | Cod sursa (job #1785933)
#include <cstdio>
using namespace std;
int inputc, input[100000], counter[100000];
void read() {
FILE *f = fopen("scmax.in", "r");
fscanf(f, "%i", &inputc);
for (int i = 0; i < inputc; i++) fscanf(f, "%i", &input[i]);
}
void process() {
counter[inputc - 1] = 1;
for (int i = inputc - 2; i >= 0; i--) {
int maximum = 0;
for (int j = i + 1; j < inputc; j++) {
if (input[j] > input[i] && maximum < counter[j]) {
maximum = counter[j];
}
}
counter[i] = 1 + maximum;
}
}
void write() {
FILE *g = fopen("scmax.out", "w");
int previousno = 0, previousc = 0, previouspos;
for (int i = 0; i < inputc; i++) {
if (previousc < counter[i]) {
previousc = counter[i];
previousno = input[i];
previouspos = i;
}
}
fprintf(g, "%i\n%i ", previousc, previousno);
for (int i = previouspos + 1; i < inputc; i++) {
if (input[i] > previousno && counter[i] == previousc - 1) {
fprintf(g, "%i ", input[i]);
previousc = counter[i];
previousno = input[i];
}
}
}
int main() {
read();
process();
write();
}