Pagini recente » Cod sursa (job #876523) | Cod sursa (job #135209) | Cod sursa (job #1562977) | Cod sursa (job #1947605) | Cod sursa (job #2422644)
#include <iostream>
#include <fstream>
using namespace std;
int n,v[100001],dp[100001],pos[100001];
int sir[100001];
int main()
{
ifstream f("scmax.in");
ofstream g("scmax.out");
f>>n;
for(int i=0;i<n;i++)
f>>v[i];
dp[0]=1;
for(int i=1;i<n;i++){
int maxx=0;
for(int j=0;j<i;j++)
if(v[j]<v[i]&&dp[j]>maxx){
maxx=dp[j];
pos[i]=j;
}
dp[i]+=maxx+1;
}
int possol;
int sol=0;
for(int i=0;i<n;i++){
if(dp[i]>sol){
sol=dp[i];
possol=i;
}
if(dp[i]==1)
pos[i]=-1;
}
g<<sol<<endl;
int x=possol;
while(pos[x]!=-1){
sir[dp[x]]=v[x];
x=pos[x];
}
sir[1]=v[x];
for(int i=1;i<=sol;i++)
g<<sir[i]<<" ";
}