제출 #705294

#제출 시각아이디문제언어결과실행 시간메모리
705294robertanechita1Rabbit Carrot (LMIO19_triusis)C++17
0 / 100
1 ms340 KiB
#include <bits/stdc++.h> using namespace std; const int MaxN = 200005; int n, m, a[MaxN]; long long b[MaxN], aib[MaxN], ans = 1, dp[MaxN]; pair <int, int> c[MaxN]; void Update(int poz, long long val){ for(int i = poz; i <= n; i += (i & -i)) aib[i] = max(aib[i], val); } long long Query(int poz){ long long s = 0; for(int i = poz; i > 0; i -= (i & -i)) s = max(s, aib[i]); return s; } int main() { cin >> n >> m; for(int i = 1; i <= n; i++){ cin >> a[i]; b[i] = 1LL * m * i - a[i]; c[i] = {b[i], i}; } sort(c + 1, c + n + 1); int val = 1; b[c[1].second] = 1; for(int i = 2; i <= n; i++){ if(c[i].first != c[i - 1].first) val++; b[c[i].second] = val; } for(int i = 1; i <= n; i++){ dp[i] = max(dp[i], 1 + Query(b[i])); Update(b[i], dp[i]); ans = max(ans, dp[i]); } cout << n - ans << "\n"; return 0; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...