제출 #1164772

#제출 시각아이디문제언어결과실행 시간메모리
1164772KaleemRazaSyedRabbit Carrot (LMIO19_triusis)C++20
35 / 100
43 ms488 KiB
#include<bits/stdc++.h> using namespace std; int main() { int n, m; cin >> n >> m; int a[n]; for(int i = 0; i < n; i ++) cin >> a[i]; vector<int> vec; /*for(int i = 0; i < n; i ++) vec.push_back(a[i]), vec.push_back(i * m); sort(vec.begin(), vec.end()); vec.resize(unique(vec.begin(), vec.end()) - vec.begin()); for(int i = 0; i < n; i ++) a[i] = lower_bound(vec.begin(), vec.end(), a[i]) - vec.begin(); */ vec.resize(5000 + 1); iota(vec.begin(), vec.end(), 0); const int inf = 1e9; int dp[2][vec.size()]; for(int i = 0; i < vec.size(); i++) dp[0][i] = inf; dp[0][0] = 0; for(int i = 0; i < n; i ++) { bool b = (i + 1) & 1, nb = i & 1; int mi = inf, j = vec.size() - 1; for(int k = vec.size() - 1; k >= 0; k--) { while(j >= 0 && vec[k] - vec[j] <= m) mi = min(mi, dp[nb][j]), j--; dp[b][k] = mi + (k != a[i]); } } int ans = n; for(int i = 0; i < vec.size(); i ++) ans = min(ans, dp[n % 2][i]); cout << ans << endl; 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...