제출 #639652

#제출 시각아이디문제언어결과실행 시간메모리
639652PietraRabbit Carrot (LMIO19_triusis)C++14
14 / 100
265 ms200032 KiB
// pra cada cara a gnt sabe o intervalo q ele pode precisar // v[i] - m (sair dele p esse) ou // dp[i][s] -> min qtd de descidas q eu preciso // p com s subidas chegar em i // tem um intervalo p cada cara mas isso depende dos anteriores // dp[i][alt] = min de ops q eu preciso fzr para que esteja ok // chegar em i com o ultimo tendo altura alt #include<bits/stdc++.h> using namespace std ; const int maxn = 5e3 + 5 ; const int maxx = 20 ; int n, m, v[maxn], dp[maxn][maxn], mx ; int solve(int i, int alt){ // cout << i << " " << alt << "\n" ; if(i > n) return 0 ; if(dp[i][alt] != -1) return dp[i][alt] ; int ans = maxn ; int op1 = alt + m, op2 = v[i] ; ans = min({ans, solve(i+1, op1) + 1, solve(i+1, 0) + 1}) ; if(v[i] <= alt + m) ans = min(ans, solve(i+1, op2)) ; return dp[i][alt] = ans ; } int main(){ ios_base::sync_with_stdio(false) ; cin.tie(NULL) ; cin >> n >> m ; for(int i = 1 ; i <= n ; i++) cin >> v[i] ; for(int i = 1 ; i <= n ; i++) mx = max(mx, v[i]) ; for(int i = 0 ; i <= n ; i++) v[i] += mx ; memset(dp, -1, sizeof dp) ; cout << solve(1, mx) << "\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...