Pagini recente » Cod sursa (job #1676526) | Cod sursa (job #2636782) | Cod sursa (job #2516226) | Cod sursa (job #3148057) | Cod sursa (job #2363286)
#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];
int last[100005];
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;
}
}
fo<<dp[n]<<'\n';
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;
}