Pagini recente » Cod sursa (job #1751862) | Cod sursa (job #1966652) | Cod sursa (job #1980940) | Cod sursa (job #888292) | Cod sursa (job #2365309)
#include <iostream>
#include <fstream>
#include <vector>
#define NMAX 100005
using namespace std;
ifstream fi("scmax.in");
ofstream fo("scmax.out");
int N;
int sir[NMAX];
int dp[NMAX];
int origin[NMAX];
vector<int> s;
int main()
{
fi >> N;
for(int i = 1; i <= N; ++i)
{
fi >>sir[i];
dp[i] = 1;
origin[i] = 0;
}
for(int i = 2; i <= N; ++i)
{
for(int j = 1; j < i; ++j)
{
if(sir[j] < sir[i])
{
if(dp[j] + 1 > dp[i])
{
dp[i] = dp[j] + 1;
origin[i] = j;
}
}
}
}
int maxx = 0;
int maxi;
for(int i = 1;i <= N; ++i)
{
if(dp[i] > maxx)
{
maxx = dp[i];
maxi = i;
}
}
fo << maxx<<"\n";
while(maxi != 0)
{
s.push_back(sir[maxi]);
maxi = origin[maxi];
}
for(auto it = s.rbegin(); it != s.rend(); ++it)
fo << *it << " ";
}