Pagini recente » Cod sursa (job #994534) | Cod sursa (job #2623129) | Cod sursa (job #1061724) | Cod sursa (job #1997416) | Cod sursa (job #1197468)
#include <fstream>
#include <iostream>
using namespace std;
ifstream f("scmax.in");
ofstream g("scmax.out");
int b[100000];
bool ok[100000];
void best( int a[], int n, int &x)
{
int i, j, max;
for(i=1;i<=n;i++)
{
max=0;
for( j=i-1; j>=1; j--)
if(b[j] > max and a[j] < a[i])
max = b[j];
b[i] = max+1;
if(max+1 > x)
x = max+1;
}
}
void ver(int a[], int x)
{
int i=1,j;
while(b[i] < x)
i++;
j = i;
for( ; x!=0; j--)
{
if(b[j] == x )
{
ok[j] = 1;
x = x-1;
}
}
}
int main()
{
int n, a[100000], i, x=0;
f >> n;
for( i=1; i<=n; i++)
f >> a[i];
best(a, n, x);
g << x << "\n";
ver(a, x);
for( i=1; i<=n; i++)
if(ok[i] == 1)
g << a[i] << " ";
}