Pagini recente » Cod sursa (job #516349) | Cod sursa (job #1150096) | Cod sursa (job #1929737) | Cod sursa (job #711407) | Cod sursa (job #166187)
Cod sursa(job #166187)
#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 = 6000,
mj = -1;
int mn = 6000;
for (int j = i + 1; j < N; ++j)
if (V[j] >= V[i]) {
if (V[j] >= mn)
continue;
mn = V[j];
if (cnt[j] < m)
m = cnt[j],
mj = j;
}
if (mj == -1)
m = 0;
cnt[i] = m + 1;
p[i] = mj;
}
for (int i(0); i < N; ++i)
cout << cnt[i] << " ";
cout << endl;
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;
}