# | TimeUTC-0 | Username | Problem | Language | Result | Execution time | Memory |
---|---|---|---|---|---|---|---|
999582 | vjudge1 | LIS (INOI20_lis) | C++17 | 1543 ms | 142164 KiB |
This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
#include <bits/stdc++.h>
#define ll long long
#define endl "\n"
using namespace std;
mt19937_64 rng(chrono::steady_clock::now().time_since_epoch().count());
const ll N = 1e6 + 5;
ll t[N];
set<pair<ll, ll>> v[N];
void upd(ll v)
{
for (; v < N; v |= (v + 1)) t[v]++;
}
ll sum(ll v)
{
ll ans = 0;
for (; v >= 0; v = (v & (v + 1)) - 1) ans += t[v];
return ans;
}
ll ans = 1;
void f(pair<ll, ll> x, ll lis)
{
ans = max(ans, lis);
while (!v[lis].empty() and v[lis].lower_bound(make_pair(x.first, -1)) != v[lis].end() and v[lis].lower_bound(make_pair(x.first, -1))->second > x.second)
f(*v[lis].lower_bound(make_pair(x.first, -1)), lis + 1), v[lis].erase(*v[lis].lower_bound(make_pair(x.first, -1)));
v[lis].insert(x);
}
void solve()
{
ll q;
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |