Submission #519129

#TimeUsernameProblemLanguageResultExecution timeMemory
519129blueRabbit Carrot (LMIO19_triusis)C++17
100 / 100
57 ms5356 KiB
#include <iostream> #include <vector> #include <algorithm> using namespace std; using vi = vector<int>; vi A; int N, M; int main() { ios_base::sync_with_stdio(false); cin.tie(NULL); cin >> N >> M; A = vi(2+N); A[1] = 0; for(int i = 2; i <= N+1; i++) cin >> A[i]; vi I(1+N); for(int i = 0; i <= N; i++) I[i] = i+1; sort(I.begin(), I.end(), [] (int l, int r) { if(A[l] - M*l == A[r] - M*r) return l < r; else return A[l] - M*l > A[r] - M*r; }); vi DP(1+N+1, 5'000'000); vi BIT(1+N+1, 5'000'000); int ans = 5'000'000; for(int i: I) { if(i == 1) DP[i] = 0; else { for(int x = i-1; x >= 1; x -= x&-x) { DP[i] = min(DP[i], BIT[x] + i-1); } } for(int x = i; x <= N+1; x += x&-x) BIT[x] = min(BIT[x], DP[i] - i); ans = min(ans, DP[i] + N+1-i); } cout << 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...