Pagini recente » Cod sursa (job #2967555) | Cod sursa (job #1430288) | Cod sursa (job #2186388) | Cod sursa (job #1406890) | Cod sursa (job #2722906)
#include <fstream>
#define N 100005
using namespace std;
ifstream in("scmax.in");
ofstream out("scmax.out");
int n;
int v[N], dp[N], leg[N], rez[N];
int main()
{
in>>n;
for(int i = 1; i <= n; ++i)
in>>v[i];
for(int i = 1; i <= n; ++i){
dp[i] = 1;
for(int j = i - 1; j >= 1; --j)
if(dp[j] + 1 > dp[i] && v[j] < v[i]){
leg[i] = j;
dp[i] = dp[j] + 1;
}
}
int maxim = 0, poz = 0;
for(int i = 1; i <= n; ++i)
if(maxim < dp[i]){
maxim = dp[i];
poz = i;
}
out<<maxim<<'\n';
int k = 0;
while(poz){
rez[++k] = v[poz];
poz = leg[poz];
}
for(int i = k; i >= 1; --i)
out<<rez[i]<<" ";
in.close();
out.close();
return 0;
}