Pagini recente » Cod sursa (job #2899832) | Cod sursa (job #880224) | Cod sursa (job #2111069) | Cod sursa (job #2689860) | Cod sursa (job #164655)
Cod sursa(job #164655)
#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");
for (int i = mj; i != -1; i = p[i])
fprintf(fo, "%d ", i + 1);
fprintf(fo, "\n");
fclose(fo);
return 0;
}