Pagini recente » Cod sursa (job #2967051) | Cod sursa (job #1335858) | Cod sursa (job #2260367) | Cod sursa (job #378470) | Cod sursa (job #1528219)
#include <fstream>
#define NM 100001
using namespace std;
ifstream InF ("scmax.in");
ofstream OutF ("scmax.out");
unsigned a[NM];
unsigned n;
unsigned x[NM], t[NM];
unsigned i, j, s, p, u, m;
void afis (unsigned m);
void scan ();
void solve ();
void print ();
int main ()
{
scan ();
solve ();
print ();
return 0;
}
void display (unsigned m)
{
if (m)
{
display (t[m]);
OutF << a[m] << " ";
}
}
void scan ()
{
InF >> n;
for (i=1; i<=n; i++)
InF >> 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 ()
{
OutF << s << "\n";
display (x[s]);
}