Pagini recente » Cod sursa (job #1273779) | Cod sursa (job #1291379) | Cod sursa (job #2325076) | Cod sursa (job #2146751) | Cod sursa (job #1033178)
#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]){
{
int val = max(sol[i],sol[j]+1);
if (val != sol[i])
{
pre[i] = j;
}
sol[i] = max(sol[i],sol[j]+1);
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);
}