Submission #1311463

#TimeUsernameProblemLanguageResultExecution timeMemory
1311463samarthkulkarniSafety (NOI18_safety)C++20
35 / 100
245 ms1472 KiB
#include <bits/stdc++.h> using namespace std; using ll = long long; #define vi vector<long long> #define all(x) x.begin(), x.end() #define endl "\n" void solution(); int main(){ ios::sync_with_stdio(false); cin.tie(nullptr); solution(); return 0; } void solution() { ll n, h; cin >> n >> h; vi a(n); for (ll &z : a) cin >> z; ll mx = *max_element(all(a)); h = min(h, mx); vi dp(mx+1); for (int i = 0; i < n; i++) { vi ndp(mx+1); deque<ll> m; int p = 0; for (int j = 0; j <= mx; j++) { while (m.size() > 0 && m.front() < j-h) m.pop_front(); while (p <= j+h && p <= mx) { m.push_back(p); p++; while (m.size() > 0 && dp[m.front()] > dp[m.back()]) m.pop_front(); } ndp[j] = abs(j-a[i]) + dp[m.front()]; } dp = move(ndp); } cout << *min_element(all(dp)) << endl; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...