Pagini recente » Cod sursa (job #481544) | Cod sursa (job #2046331) | Profil thePunisher | Cod sursa (job #816096) | Cod sursa (job #2801056)
#include <bits/stdc++.h>
using namespace std;
ifstream f("subsir2.in");
ofstream g("subsir2.out");
int a[5001];
int n, l;
void SCLM(int n){
int *LG = new int[n + 1];
int pmx = n;
LG[n] = 1;
for(int i = n - 1;i > 0;i--){
LG[i] = 1;
for(int j = i + 1;j <= n;j++)
if(a[i] <= a[j] && LG[i] < LG[j] + 1)
LG[i] = LG[j] + 1;
if(LG[i] >= LG[pmx]) pmx = i;
}
g << LG[pmx] << "\n";
int poz = 0;
for(int i = LG[pmx];i >= 1;i--){
int mn = INT_MAX, p = 0;
for(int k = poz + 1;k <= n - i + 1;k++)
if(LG[k] == i && a[k] >= a[poz] && mn > a[k])
p = k, mn = a[k];
poz = p;
g << a[p] << " ";
}
delete[] LG;
}
int main(){
f >> n;
for(int i = 1, x;i <= n;i++){
f >> x;
a[++l] = x;
}
SCLM(l);
}