Pagini recente » Cod sursa (job #1621018) | Cod sursa (job #2611920) | Cod sursa (job #1079082) | Cod sursa (job #63365) | Cod sursa (job #164656)
Cod sursa(job #164656)
#include <iostream>
#include <fstream>
using namespace std;
int N,
V[5000];
int cnt[5000],
p[5000];
int main(int argc, char *argv[]) {
FILE *fi = fopen("subsir2.in", "r");
fscanf(fi, "%d", &N);
for (int i(0); i < N; ++i)
fscanf(fi, "%d", V + i);
fclose(fi);
for (int i = N - 1; i >= 0; --i) {
int m = 0,
mj = -1;
for (int j = N - 1; j > i; --j)
if (V[j] > V[i])
if ((cnt[j] > m) || ((cnt[j] == m) && (V[j] < V[mj])))
m = cnt[j],
mj = j;
cnt[i] = m + 1;
p[i] = mj;
}
int m = -1,
mj = 0;
for (int i(0); i < N; ++i)
if (cnt[i] > m)
m = cnt[i],
mj = i;
FILE *fo = fopen("subsir2.out", "w");
fprintf(fo, "%d\n", m);
for (int i = mj; i != -1; i = p[i])
fprintf(fo, "%d ", i + 1);
fprintf(fo, "\n");
fclose(fo);
return 0;
}