Pagini recente » Cod sursa (job #1188571) | Cod sursa (job #1597842) | Cod sursa (job #3039989) | Cod sursa (job #593163) | Cod sursa (job #1582624)
#include <fstream>
#define MAX 100001
using namespace std;
ifstream fin ("scmax.in");
ofstream fout ("scmax.out");
unsigned int N;
unsigned int a[MAX];
unsigned int x[MAX], t[MAX];
unsigned int sol, p, u, m;
unsigned int i, j;
void scan ();
void solve ();
void print ();
void PRINT (unsigned int m);
int main ()
{
scan ();
solve ();
print ();
return 0;
}
void scan ()
{
fin >> N;
for (i=1; i<=N; i++)
fin >> a[i];
}
void solve ()
{
x[1] = 1;
sol = 1;
for (i=2; i<=N; i++)
{
p = 1;
u = sol;
while (p <= u)
{
m = (u+p) / 2;
if (a[i] > a[x[m]])
p = m+1;
else
u = m-1;
}
if (p > sol)
sol++;
x[p] = i;
t[i] = x[p-1];
}
}
void print ()
{
fout << sol << "\n";
PRINT (x[sol]);
}
void PRINT (unsigned int m)
{
if (m)
{
PRINT (t[m]);
fout << a[m] << " ";
}
}