Pagini recente » Cod sursa (job #3263446) | Cod sursa (job #2264858) | Cod sursa (job #12441) | Cod sursa (job #2962883) | Cod sursa (job #1582580)
#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 i, j, s, p, u, m;
void read ();
void solve ();
void print ();
int main ()
{
read ();
solve ();
print ();
return 0;
}
void read ()
{
fin >> N;
for (i=1; i<=N; i++)
fin >> a[i];
}
void solve ()
{
x[1] = 1;
p = 1;
s = 1;
for (i=2; i<=N; i++)
{
p = 1;
u = s;
while (p <= u)
{
m = (u+p) / 2;
if (a[i] > a[x[m]])
p = m+1;
else
u = m-1;
}
if (p > s)
s++;
x[p] = i;
t[i] = x[p-1];
}
}
void print ()
{
fout << s << "\n";
for (i=s+1; i>=1; i--)
fout << a[m++] << " ";
}