#include "bits/stdc++.h"
using namespace std;
#define ll long long
#define all(v) v.begin(), v.end()
#define rall(v) v.rbegin(), v.rend()
// Check Functions
bool isPrime(ll n) {
if (n <= 1) return false;
if (n <= 3) return true;
if (n % 2 == 0 || n % 3 == 0) return false;
for (int i = 5; i * i <= n; i = i + 6)
if (n % i == 0 || n % (i + 2) == 0) return false;
return true;
}
bool isPowerOfTwo(int n) {
if (n == 0) return false;
return (ceil(log2(n)) == floor(log2(n)));
}
bool isPerfectSquare(ll x) {
if (x >= 0) {
ll sr = sqrt(x);
return (sr * sr == x);
}
return false;
}
void solve() {
int n, m;
cin >> n >> m;
vector<int> heights(n), b(n);
for (int i = 0; i < n; i++) {
cin >> heights[i];
b[i] = m * (i + 1) - heights[i]; // Transform heights to b[i]
}
vector<int> lanes; // Stores the LNDS sequence
for (int i = 0; i < n; i++) {
if (b[i] < 0) continue; // Only consider valid values
auto it = upper_bound(lanes.begin(), lanes.end(), b[i]);
if (it == lanes.end()) {
lanes.push_back(b[i]);
} else {
*it = b[i];
}
}
cout << (n - lanes.size()) << endl; // Minimum modifications needed
}
int32_t main() {
ios_base::sync_with_stdio(0);
cin.tie(0);
cout.tie(0);
int t = 1;
//cin >> t;
while (t--) {
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... |