Pagini recente » Cod sursa (job #2143477) | Cod sursa (job #1125359) | Cod sursa (job #2456810) | Cod sursa (job #1646245) | Cod sursa (job #2191923)
#include <iostream>
#include <fstream>
#include <climits>
using namespace std;
ifstream f("scmax.in");
ofstream g("scmax.out");
int x[100010], k[100010], pz[100010], nr;
int maxi(int poz)
{
int mx = INT_MIN;
for (int i = 1; i <= poz; i++)
if (k[i] > mx && x[i] < x[i + 1])
mx = k[i];
return mx;
}
int main()
{
int n, maX, actual, mx = INT_MIN;
f>>n;
for (int i = 1; i <= n; i++)
f>>x[i];
for (int i = 1; i <= n; i++)
{
maX = maxi(i - 1);
k[i] = max(maX + 1, k[i]);
if (k[i] == 0)
{
nr = 1;
pz[nr] = i;
actual = x[i];
}
else
if (x[i] > actual && k[i] > 0)
{
actual = x[i];
pz[++nr] = i;
}
}
for (int i = 1; i <= n; i++)
if (mx < k[i])
mx = k[i];
g<<mx + 1<<'\n';
for (int i = 1; i <= nr; i++)
g<<x[pz[i]]<<" ";
return 0;
}