Pagini recente » Cod sursa (job #568824) | Cod sursa (job #3162720) | Cod sursa (job #2723737) | Cod sursa (job #1278042) | Cod sursa (job #1033163)
#include <iostream>
#include <cstdio>
using namespace std;
int a [100000];
int n;
void scan(){
cin >> n;
for(int i =0 ; i < n; i++)
cin >> a[i];
}
int sol [100000];
void debug(){
for(int i = 0; i < n ; i++)
cout << sol[i] << " ";
cout << endl;
}
int maxV = -1;
int pre[100000];
int bestP;
int bestV;
void dp(){
for(int i = 0 ; i < n ; i++){
sol[i] = 1;
pre[i] = -1;
for(int j = 0; j < i; j++){
if(a[i] > a[j]){
{sol[i] = max(sol[i],sol[j]+1);
pre[i] = j;
if(bestV < sol[i])
{bestV = sol[i];
bestP = i;
}
}
}
}
}
cout << bestV << endl;
}
void print(int val){
if(pre[val] == -1){
cout << a[val] << " ";
return;
}
print(pre[val]);
cout << a[val] << " ";
}
int main(){
freopen("LCS.in","r",stdin);
freopen("LCS.out","w",stdout);
scan();
dp();
print(bestP);
}