Pagini recente » Cod sursa (job #1018796) | Cod sursa (job #568947) | Cod sursa (job #1287904) | Cod sursa (job #1018595) | Cod sursa (job #2035910)
#include <iostream>
#include <fstream>
using namespace std;
ifstream in("scmax.in");
ofstream out("scmax.out");
const int maxn = 100005;
int M[maxn];
int F[maxn];
int v[maxn];
int cautbin(int n, int i)
{
int st = 1;
int dr = n;
int ret = 0;
while(st <= dr)
{
int mij = (st + dr) / 2;
if(v[M[mij]] < v[i])
{
ret = mij;
st = mij + 1;
}
else
dr = mij - 1;
}
return ret + 1;
}
int main()
{
int n;
in >> n;
for(int i = 1; i <= n; i++)
in >> v[i];
int lgmax = 0;
for(int i = 1; i <= n; i++)
{
int lg = cautbin(lgmax, i);
F[i] = M[lg - 1];
M[lg] = i;
lgmax = max(lg, lgmax);
}
out << lgmax << " " << "\n";
return 0;
}