Pagini recente » Cod sursa (job #2340978) | Cod sursa (job #1452464) | Cod sursa (job #1586153) | Cod sursa (job #1170345) | Cod sursa (job #2284613)
#include <iostream>
#include <fstream>
#define nmax 100005
using namespace std;
ifstream f("scmax.in");
ofstream g("scmax.out");
int n,sir[nmax],dp[nmax],anterior[nmax],j_max,i_max,rez[nmax];
int main(){
f>>n>>sir[1];
dp[1]=1;
i_max=1;
for(int i=2;i<=n;i++){
f>>sir[i];
j_max=0;
dp[i]=1;
for(int j=1;j<i;j++){
if(sir[j]<sir[i]&&dp[j]>dp[j_max]){
j_max=j;
}
}
dp[i]=dp[j_max]+1;
anterior[i]=j_max;
if(dp[i_max]<dp[i]){
i_max=i;
}
}
g<<dp[i_max]<<'\n';
int j=i_max;
for(int i=1;i<=dp[i_max];i++){
rez[i]=sir[j];
j=anterior[j];
}
for(int i=dp[i_max];i>=1;i--){
g<<rez[i]<<' ';
}
f.close();
g.close();
}