Submission #873300

#TimeUsernameProblemLanguageResultExecution timeMemory
873300PekibanRabbit Carrot (LMIO19_triusis)C++17
100 / 100
54 ms5072 KiB
#include <bits/stdc++.h> using namespace std; const int mxN = 2e5+2; int bit[mxN]; void umax(int idx, int x) { for (; idx < mxN; idx |= idx+1) { bit[idx] = max(bit[idx], x); } } int qmax(int idx) { int s = 0; for (; idx >= 0; idx = (idx & (idx + 1)) - 1) { s = max(s, bit[idx]); } return s; } int main() { ios::sync_with_stdio(0); cin.tie(0); int n, m; cin >> n >> m; vector<int> a(n+1), c; for (int i = 1; i <= n; ++i) { cin >> a[i]; a[i] = m*i - a[i]; c.push_back(a[i]); } sort(c.begin(), c.end()); c.erase(unique(c.begin(), c.end()), c.end()); auto find = [&](int x) { return lower_bound(c.begin(), c.end(), x) - c.begin(); }; vector<int> dp(n+1, -1e9); int ans = 0; for (int i = 1; i <= n; ++i) { if (a[i] < 0) continue; dp[i] = qmax(find(a[i])) + 1; umax(find(a[i]), dp[i]); ans = max(ans, dp[i]); } cout << n-ans << '\n'; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...