Pagini recente » Cod sursa (job #612964) | Cod sursa (job #613497) | Cod sursa (job #374802) | Cod sursa (job #613435) | Cod sursa (job #3315693)
#include<bits/stdc++.h>
using namespace std;
ifstream fin("scmax.in");
ofstream fout("scmax.out");
int v[100001];
int dp[100001];
int index[100001];
int constr[100001];
int main(){
int n;
fin>>n;
for(int i=1;i<=n;i++){
fin>>v[i];
dp[i]=1;
index[i]=-1;
}
for(int i=1;i<=n;i++){
for(int j=1;j<i;j++){
if(v[j]<v[i] && dp[i]<dp[j]+1){
dp[i]=dp[j]+1;
index[i]=j;
}
}
}
int maxx=0;
int r=0;
for(int i=1;i<=n;i++){
if(dp[i]>maxx){
maxx=dp[i];
r=i;
}
}
fout<<maxx<<'\n';
int j = maxx;
constr[j] = v[r];
while (index[r] != -1) {
r = index[r];
constr[--j] = v[r];
}
for(int i=1;i<=maxx;i++){
fout<<constr[i]<<" ";
}
}