#include<bits/stdc++.h>
using namespace std;
const int maxN = 3e5 + 5;
int n, d;
int a[maxN];
vector<int> val;
namespace sub1{
int get(int mask){
int res = 0, pre = 0, m = 0;
for (int i = 1; i <= n; ++i)
if (mask >> (i - 1) & 1){
if (!pre)
res++;
else
{
if (i - pre <= d)
res+= (a[i] > m);
}
m = max(m, a[i]);
pre = i;
}
return res;
}
void solve(){
int ans = 0;
for (int mask = 0; mask < (1 << n); ++mask)
ans = max(ans, get(mask));
cout << ans;
}
}
void compress(){
sort(val.begin(), val.end());
val.resize(unique(val.begin(), val.end()) - val.begin());
for (int i = 1; i <= n; ++i)
a[i] = upper_bound(val.begin(), val.end(), a[i]) - val.begin();
}
namespace sub4{
vector<int> q;
void solve(){
compress();
int ans = 0;
for (int i = n; i > 0; --i){
while (q.size() && a[q.back()] <= a[i])
q.pop_back();
ans = max(ans, (int) q.size() + 1);
q.push_back(i);
}
cout << ans;
}
}
namespace sub5{
int f[maxN];
int get(int x){
int res = 0;
for (; x > 0; x-= x & (-x))
res = max(res, f[x]);
return res;
}
void update(int x, int val){
for (; x <= maxN - 5; x+= x & (-x))
f[x] = max(f[x], val);
}
void solve(){
compress();
int ans = 0;
for (int i = 1; i <= n; ++i){
int res = get(a[i] - 1) + 1;
ans = max(ans, res);
update(a[i], res);
}
cout << ans;
}
}
void solve(){
if (n <= 20)
sub1::solve();
else
{
if (d == 1)
sub4::solve();
if (d == n)
sub5::solve();
}
}
int main() {
cin.tie(nullptr)->sync_with_stdio(false);
// freopen("a.inp", "r", stdin);
// freopen("a.out", "w", stdout);
cin >> n >> d;
for (int i = 1; i <= n; ++i)
cin >> a[i], val.push_back(a[i]);
solve();
return 0;
}
# | 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... |