제출 #953629

#제출 시각아이디문제언어결과실행 시간메모리
953629Akshat369Rabbit Carrot (LMIO19_triusis)C++17
0 / 100
1096 ms2652 KiB
#include <bits/stdc++.h> using namespace std; #define int long long #define INF (int)1e18 #define endl '\n' const int mod = 1000 * 1000 * 1000 + 7; const int N = 100005; #define f first #define s second #define rep(i, a, b) for(int i = (a); i < (b); i++) #define rrep(i, a, b) for(int i = (a); i > (b); i--) #define vi vector<int> #define pii pair<int, int> #define all(x) (x).begin(), (x).end() mt19937_64 RNG(chrono::steady_clock::now().time_since_epoch().count()); /* */ int n , jump; int a[N]; int dp[5005][5005]; int solve(int idx , int prev){ if (idx==n+1){ return 0; } if (dp[idx][prev]!=-1){ return dp[idx][prev]; } int ans1 = 1e9; if (idx==1){ for (int i = 0; i <=jump; ++i) { if (i==a[idx]){ ans1 = min(ans1, solve(idx+1,i)); } else{ ans1 = min(ans1, solve(idx+1,i)+1); } } } else{ for(int i = 0 ; i<= prev+jump; i++){ if (i==a[idx]){ ans1 = min(ans1, solve(idx+1,i)); } else{ ans1 = min(ans1, solve(idx+1,i)+1); } } } return dp[idx][prev] = ans1; } void Solve() { cin>>n>>jump; for (int i = 0; i < n + 5; ++i) { memset(dp[i],-1,sizeof dp[i]); } rep(i,1,n+1){ cin>>a[i]; // cout<<a[i]<<endl; } // for (int i = 0; i < 5; ++i) { // for (int j = 0; j < 5; ++j) { // cout<<dp[i][j]<<" "; // } // cout<<endl; // } cout<< solve(1,0)<<endl; } int32_t main() { auto begin = std::chrono::high_resolution_clock::now(); ios_base::sync_with_stdio(false); cin.tie(0); int t = 1; // cin >> t; for (int i = 1; i <= t; i++) { //cout << "Case #" << i << ": "; Solve(); } auto end = std::chrono::high_resolution_clock::now(); auto elapsed = std::chrono::duration_cast<std::chrono::nanoseconds>(end - begin); cerr << "Time measured: " << elapsed.count() * 1e-9 << " seconds.\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...