Pagini recente » Cod sursa (job #2891746) | Cod sursa (job #2677825) | Cod sursa (job #3038624) | Cod sursa (job #2637712) | Cod sursa (job #1644752)
#include <fstream>
#define InFile "scmax.in"
#define OutFile "scmax.out"
#define MAX 100001
using namespace std;
ifstream fin (InFile);
ofstream fout (OutFile);
void PRINT (unsigned int m);
unsigned int N;
unsigned int a[MAX];
unsigned int x[MAX], t[MAX];
unsigned int low, high, mid;
unsigned int i;
unsigned int Lmax;
unsigned int sol[MAX];
int main ()
{
fin >> N;
for (i=1; i<=N; i++)
fin >> a[i];
x[1] = 1;
Lmax = 1;
for (i=2; i<=N; i++)
{
low = 1;
high = Lmax;
while (low <= high)
{
mid = (low+high) / 2;
if (a[i] > a[x[mid]])
low = mid + 1;
else
high = mid - 1;
}
if (low > Lmax)
Lmax++;
x[low] = i;
t[i] = x[low-1];
}
fout << Lmax << '\n';
PRINT (x[Lmax]);
return 0;
}
void PRINT (unsigned int mid)
{
if (mid)
{
PRINT (t[mid]);
fout << a[mid] << ' ';
}
}