Pagini recente » Cod sursa (job #1616366) | Cod sursa (job #2270027) | Cod sursa (job #571185) | Cod sursa (job #3178376) | Cod sursa (job #1725412)
#include <fstream>
using namespace std;
int main()
{
ifstream cin ("scmax.in");
ofstream cout ("scmax.out");
int *best, *a, max, sol = 0, *poz, p, n, i, j;
cin >> n;
best = new int[n + 1];
a = new int[n + 1];
poz = new int[n + 1];
for (i = 1; i <= n; i++){
cin >> a[i];
}
best[n] = 1;
poz[n] = -1;
max = 1;
p = n;
for(i = n - 1; i >= 1; i--){
best[i] = 1;
poz[i] = -1;
for(j = i + 1; j <= n; j++){
if(a[i] < a[j] && best[i] < best[j] + 1){
best[i] = best[j] + 1;
poz[i] = j;
if(best[i] > max){
max = best[i];
p=i;
}
}
}
}
cout << max << "\n";
i=p;
while(i != -1){
cout << a[i] << " ";
i = poz[i];
}
return 0;
}