Pagini recente » Cod sursa (job #384945) | Clasament bairam_aladin | Cod sursa (job #1967527) | Cod sursa (job #1918879) | Cod sursa (job #2321384)
#include <iostream>
#include <fstream>
#include <algorithm>
using namespace std;
int *read(int &n) {
ifstream fin("scmax.in");
if (!fin.is_open()) {
cout << "The file can't be opened!\n";
exit(EXIT_FAILURE);
}
fin >> n;
int *v = new int[n + 1];
for (int i = 1; i <= n; ++i) {
fin >> v[i];
}
fin.close();
return v;
}
int main() {
int n;
int *v = read(n);
int *lung = new int[n + 1];
int *succ = new int[n + 1];
int MAX = 0;
int pos = 0;
lung[n] = 1;
succ[n] = 0;
for (int i = n - 1; i >= 1; --i) {
lung[i] = 1;
succ[i] = 0;
for (int j = i + 1; j <= n; ++j) {
if (v[i] < v[j]) {
if (lung[i] < 1 + lung[j]) {
lung[i] = 1 + lung[j];
succ[i] = j;
}
}
}
if (MAX < lung[i]) {
//cout << MAX << ' ';
MAX = lung[i];
pos = i;
}
}
ofstream fout("scmax.out");
fout << MAX << '\n';
while (succ[pos]) {
fout << v[pos] << ' ';
pos = succ[pos];
}
fout << v[pos] << '\n';
return 0;
}