Pagini recente » Diferente pentru problema/iepuri2 intre reviziile 2 si 3 | Cod sursa (job #1169213) | Diferente pentru utilizator/dariusdarius intre reviziile 71 si 72 | Diferente pentru problema/vampir intre reviziile 43 si 44 | Cod sursa (job #639266)
Cod sursa(job #639266)
#include <iostream>
#include <fstream>
using namespace std;
#define DIM 1000000
int a[DIM], prev[DIM], len[DIM];
ifstream f("scmax.in");
ofstream g("scmax.out");
void print(int pos)
{
if (pos < 0)
return;
print(prev[pos]);
g << a[pos] << " ";
}
int main()
{
int n, i, j, max, pos;
f >> n;
for (i = 0; i < n; i++)
f >> a[i];
len[0] = 1;
prev[0] = -1;
for (i = 1; i < n; i++) {
max = 0;
pos = -1;
for (j = i - 1; j >= 0; j--) {
if (a[j] < a[i] && a[j] > max) {
max = a[j];
pos = j;
}
}
len[i] = 1 + len[pos];
prev[i] = pos;
}
max = 0;
for (i = 0; i < n; i++)
if (len[i] > max) {
max = len[i];
pos = i;
}
g << max << endl;
print(pos);
f.close();
g.close();
}