Pagini recente » Cod sursa (job #1262224) | Cod sursa (job #1421884) | Cod sursa (job #1152491) | Cod sursa (job #1046498) | Cod sursa (job #2134233)
#include <fstream>
#include <vector>
#include <algorithm>
#define pb push_back
using namespace std;
std::ifstream in("scmax.in");
std::ofstream out("scmax.out");
const int MAX_N =100000 +10;
int N;
int v[MAX_N]{0};
int best[MAX_N]{0};
int pind[MAX_N]{0};
int main()
{
in >> N;
for(int i =1 ; i <= N ; i++)
in>>v[i];
for(int i = 1 ; i<= N ; i++)
best[i] = 1, pind[i] = i;
best[0] = 0;
int bi;
for(int i = 2 ; i <= N ; i++)
{
bi = 0;
for(int j = 1 ; j< i ; j++)
if(v[j]<v[i]&& best[j] > best[bi])
bi = j;
if(bi!=0)
{
best[i] = 1+best[bi];
pind[i] = bi;
}
}
int * el = max_element(best+1,best+1+N);
out<<*el<<'\n';
int poz = 1;
for(int i = 2 ; i <= N ; i++)
if(best[i]>best[poz])
poz = i;
vector<int> sorted;
while(pind[poz]!=poz)
{
sorted.push_back(v[poz]);
poz = pind[poz];
}
sorted.pb(v[poz]);
std::reverse(sorted.begin(),sorted.end());
for(const int& i:sorted)
out<<i<<" ";
return 0;
}