Pagini recente » Cod sursa (job #1009328) | Cod sursa (job #2055398) | Cod sursa (job #2025794) | Cod sursa (job #2168018) | Cod sursa (job #2105571)
#include <iostream>
#include <fstream>
using namespace std;
//ifstream fin("sclm2.in");
//ofstream fout("sclm2.out");
ifstream fin("scmax.in");
ofstream fout("scmax.out");
const int NMax = 100005;
int v[NMax], a[NMax], n;
int N;
void Read()
{
fin >> N;
for(int i=1; i<=N; ++i)
fin >> v[i];
}
void Solve()
{
n = 1;
a[1] = v[1];
for(int i=2; i<=N; ++i)
{
if(v[i] > a[n])
{
a[++n] = v[i];
}
else
if(v[i]==a[n])
continue;
else
{
int st = 1, dr = n, mij;
while( st < dr )
{
mij = (st + dr)/2;
if(a[mij] == v[i])
{
st = mij;
break;
}
if(a[mij] < v[i])
st = mij + 1;
else
dr = mij;
}
a[st] = v[i];
}
}
fout << n;
}
int main()
{
Read();
Solve();
return 0;
}