This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
#define NDEBUG
#ifdef NDEBUG
#define dbg(TXTMSG) (static_cast<int>(0))
#define dbgv(VARN) (static_cast<int>(0))
#else
#define dbg(TXTMSG) cerr << "\n" << TXTMSG
#define dbgv(VARN) cerr << "\n" << #VARN << " = "<<VARN << ", line: " << __LINE__ << "\n"
#define _GLIBCXX_DEBUG 1
#define _GLIBCXX_DEBUG_PEDANTIC 1
#endif
#include <bits/stdc++.h>
using namespace std;
using ll = long long;
constexpr ll INFTY = 1e10;
#define var const auto&
int main() {
ll N,X;
cin >> N >> X;
vector<ll> tempratures(N);
for (ll i = 0; i < N; i++)
{
cin >> tempratures[i];
}
vector<ll> needed_info(N);
vector<ll> currtime_best_revLDS_of_len(N+1,INFTY);
currtime_best_revLDS_of_len[0] = -INFTY;
for (ll i = (N-1); i >= 0; i--)
{
ll cindice = lower_bound(currtime_best_revLDS_of_len.begin(),currtime_best_revLDS_of_len.end()
, -tempratures[i])
- currtime_best_revLDS_of_len.begin();
currtime_best_revLDS_of_len[cindice]=-tempratures[i];
//dbg("array at step") << i;
//for (ll i = 0; i < N; i++)
//{
// dbg(":") << (currtime_best_revLDS_of_len[i]);
//}
needed_info[i] = lower_bound(currtime_best_revLDS_of_len.begin(),currtime_best_revLDS_of_len.end(), -(tempratures[i]-X))
- currtime_best_revLDS_of_len.begin()-1ll;
dbgv(needed_info[i]);
}
vector<ll> before_cheating_best_LIS_of_len(N+1,INFTY);
before_cheating_best_LIS_of_len[0]=-INFTY;
ll best = 1;
for (ll i = 0; i < N; i++)
{
//dbg("array 2 at step") << i;
//for (ll i = 0; i < N; i++)
//{
// dbg(":") << (before_cheating_best_LIS_of_len[i]);
//}
best = max(best,
needed_info[i]
+ (lower_bound(before_cheating_best_LIS_of_len.begin(),before_cheating_best_LIS_of_len.end(), tempratures[i]) - before_cheating_best_LIS_of_len.begin())
);
*lower_bound(before_cheating_best_LIS_of_len.begin(),before_cheating_best_LIS_of_len.end(), tempratures[i])
=tempratures[i];
}
cout << max(best,lower_bound(before_cheating_best_LIS_of_len.begin(),before_cheating_best_LIS_of_len.end(), INFTY)
- before_cheating_best_LIS_of_len.begin()-1ll);
}
/*
6 3
1 2 3 1 5 6
*/
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |