Pagini recente » Cod sursa (job #1782532) | Cod sursa (job #1496809) | Cod sursa (job #2823338) | Cod sursa (job #265027) | Cod sursa (job #2545150)
#define MAX_N 100000
#include <fstream>
using namespace std;
ifstream fin("scmax.in");
ofstream fout("scmax.out");
int n, l, PD[MAX_N + 1], T[MAX_N + 1];
int Pos(int x);
void Afisare(int x);
int main()
{
fin >> n;
for (int i = 0, x, p; i < n; ++i)
{
fin >> x;
p = Pos(x);
PD[p] = x;
T[PD[p]] = PD[p - 1];
}
fout << l << '\n';
//Afisare(PD[l]);
fin.close();
fout.close();
return 0;
}
int Pos(int x)
{
int st = 1, dr = l, mij, res = 0;
while (st <= dr)
{
mij = (st + dr) / 2;
if (PD[mij] >= x)
{
dr = mij - 1;
}
else
{
res = mij;
st = mij + 1;
}
}
if (res == l)
{
res = ++l;
}
if (res == 0)
{
res = 1;
}
return res;
}
void Afisare(int x)
{
if (T[x] == 0) { fout << x << ' '; }
else
{
Afisare(T[x]);
fout << x << ' ';
}
}