Submission #93373

#TimeUsernameProblemLanguageResultExecution timeMemory
93373inomK blocks (IZhO14_blocks)C++14
53 / 100
2 ms380 KiB
#include<bits/stdc++.h> #include<ext/pb_ds/tree_policy.hpp> #include<ext/pb_ds/assoc_container.hpp> #define fi first #define se second #define new new228 #define pb push_back #define rank rank228 #define int long long #define sz(c) (int)(c).size() #define all(c) (c).begin(), (c).end() #define rall(c) (c).rbegin(), (c).rend() using namespace std; using namespace __gnu_pbds; #pragma GCC optimize("Ofast") #pragma GCC optimize("no-stack-protector") #pragma GCC optimize("unroll-loops") #pragma GCC target("sse,sse2,sse3,ssse3,popcnt,abm,mmx,tune=native") #pragma GCC optimize("fast-math") #pragma warning(disable : 4996) typedef tree<int, null_type, less_equal<int>, rb_tree_tag, tree_order_statistics_node_update> ordered_set; // st.oreder_of_key(); const int N = 110; const int INF = 1e15 + 7; const int MAXN = 100100; const int MOD = 998244353; int TN = 1; int n, m; int a[N]; int dp[MAXN][N]; void solve() { scanf("%lld %lld", &n, &m); for (int i = 1; i <= n; i++) scanf("%lld", a + i); for (int i = 0; i <= n; i++) for (int j = 0; j <= m; j++) dp[i][j] = INF; dp[1][1] = a[1]; for (int i = 2; i <= n; i++) { dp[i][1] = max(dp[i - 1][1], a[i]); for (int k = 2; k <= min(i, m); k++) { int mx = 0; dp[i][k] = dp[i - 1][k - 1] + a[i]; for (int j = i - 1; j >= 1; j--) { if (j < k - 1) break; mx = max(mx, a[j + 1]); dp[i][k] = min(dp[i][k], dp[j][k - 1] + mx); } } } printf("%lld", dp[n][m]); return; } signed main() { // in; out; // cin >> TN; while (TN--) { solve(); } return 0; }

Compilation message (stderr)

blocks.cpp:23:0: warning: ignoring #pragma warning  [-Wunknown-pragmas]
 #pragma warning(disable : 4996)
 
blocks.cpp: In function 'void solve()':
blocks.cpp:39:10: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
     scanf("%lld %lld", &n, &m);
     ~~~~~^~~~~~~~~~~~~~~~~~~~~
blocks.cpp:41:14: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
         scanf("%lld", 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...