Pagini recente » Cod sursa (job #1089184) | Cod sursa (job #827291) | Cod sursa (job #253331) | Cod sursa (job #3189703) | Cod sursa (job #2858738)
#include <bits/stdc++.h>
using namespace std;
ifstream in ("scmax.in");
ofstream out ("scmax.out");
int v[100001], n;
int ans[1000001];
int find_poz(int dr, int nr)
{
int st = 1;
int poz = 0;
while (st <= dr)
{
int mid = (st + dr) / 2;
if (ans[mid] >= nr)
poz = mid, dr = mid - 1;
else
st = mid + 1;
}
return poz;
}
void solve()
{
in >> n;
for (int i = 1;i<=n;++i)
in >> v[i];
int len = 1;
ans[1] = v[1];
for (int i = 1;i<=n;++i)
{
if (v[i] < ans[1])
ans[1] = v[i];
else if (v[i] > ans[len])
ans[++len] = v[i];
else
ans[find_poz(len,v[i])] = v[i];
}
out << len << '\n';
return;
}
main ()
{
ios_base::sync_with_stdio(false);
cin.tie(NULL);
int t = 1;
//cin >> t;
while (t--)
solve();
return 0;
}