Submission #159548

#TimeUsernameProblemLanguageResultExecution timeMemory
159548DrSwadK blocks (IZhO14_blocks)C++17
0 / 100
51 ms42212 KiB
#include <bits/stdc++.h> using namespace std; const int N = 1e5 + 10; const int K = 105; const int INF = 1e9; int n, k; int a[N]; int l[N]; int dp[N][K]; int main() { // freopen("in", "r", stdin); // freopen("out", "w", stdout); cin >> n >> k; for (int i = 1; i <= n; i++) scanf("%d", &a[i]); for (int i = 2; i <= n; i++) { int at = i - 1; while (at > 0 && a[at] < a[i]) at = l[at]; l[i] = at; } fill(&dp[0][0], &dp[N][0], INF); dp[0][0] = 0; for (int i = 1; i <= n; i++) { for (int j = 1; j <= k; j++) { dp[i][j] = min(a[i] + dp[min(max(l[i], j - 1), i - 1)][j - 1], dp[l[i]][j]); } } cout << dp[n][k] << endl; return 0; }

Compilation message (stderr)

blocks.cpp: In function 'int main()':
blocks.cpp:19:36: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
  for (int i = 1; i <= n; i++) scanf("%d", &a[i]);
                               ~~~~~^~~~~~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...