Pagini recente » Cod sursa (job #1333596) | Cod sursa (job #286864) | Cod sursa (job #2585414) | Cod sursa (job #2423640) | Cod sursa (job #547945)
Cod sursa(job #547945)
#include <iostream>
#include <fstream>
#include <vector>
using namespace std;
int n , best[100005] , sir[100005] , pozmax;
long long x[100005];
int main ()
{
ifstream f ("scmax.in");
ofstream g ("scmax.out");
vector <int> sol;
int max = 0;
f >> n;
for (int i = 1 ; i <= n ; ++i)
f >> x[i];
for (int i = 1 ; i <= n ; ++i)
{
int maxx = 0;
best[i] = 0;
sir[i] = 0;
for (int j = 1 ; j < i ; ++j)
if (x[j] < x[i] && best[j] > maxx)
{
maxx = best[j];
sir[i] = j;
}
best[i] = maxx + 1;
if (best[i] > max)
{
max = best[i];
pozmax = i;
}
}
g << max << "\n";
for (int i = pozmax ; i ; i = sir[i])
sol.push_back (x[i]);
for (int i = sol.size() - 1 ; i >= 0 ; --i)
g << sol[i] << " ";
g << "\n";
return 0;
}