Pagini recente » Cod sursa (job #3290490) | Cod sursa (job #2524466) | Cod sursa (job #1371238) | Cod sursa (job #2457872) | Cod sursa (job #2363373)
#include <iostream>
#include <fstream>
#include <vector>
#include <algorithm>
using namespace std;
ofstream fo("scmax.out");
ifstream fi("scmax.in");
int n;
int sir[100005];
int dp[100005],poz;
int last[100005],maxim=-1000;
vector <int> sol;
int main()
{
fi>>n;
for(int i=1; i<=n; i++)
{
fi>>sir[i];
dp[i]=1;
}
for(int i=1; i<n; i++)
for(int j=i+1; j<=n; j++)
{
if(sir[i]<sir[j] && dp[j]<dp[i]+1)
{
dp[j]=dp[i]+1;
last[j]=i;
}
}
for(int i=1;i<=n;i++)
if(maxim<dp[i])
{
poz=i;
maxim=dp[i];
}
fo<<maxim<<'\n';
n=poz;
while(n)
{
sol.push_back(sir[n]);
n=last[n];
}
reverse(sol.begin(),sol.end());
for(auto s:sol)
fo<<s<<" ";
fi.close();
fo.close();
return 0;
}