Submission #332176

#TimeUsernameProblemLanguageResultExecution timeMemory
332176Valera_GrinenkoK blocks (IZhO14_blocks)C++17
0 / 100
1 ms364 KiB
#pragma GCC optimize("Ofast") #pragma GCC target("avx,avx2,fma") #pragma GCC optimization ("unroll-loops") #include <iostream> #include <fstream> #include <algorithm> #include <vector> #include <set> #include <stack> #include <map> #include <unordered_map> #include <iomanip> #include <cmath> #include <queue> #include <bitset> #include <numeric> #include <array> #include <cstring> #include <random> #include <chrono> #define fi first #define se second #define pb push_back #define mp make_pair #define all(x) (x).begin(), (x).end() #define rall(x) (x).rbegin(), (x).rend() #define make_unique(x) sort(all((x))); (x).resize(unique(all((x))) - (x).begin()) typedef long long ll; typedef long double ld; using namespace std; mt19937 rng(chrono::steady_clock::now().time_since_epoch().count()); // #include <ext/pb_ds/assoc_container.hpp> // #include <ext/pb_ds/tree_policy.hpp> // using namespace __gnu_pbds; // template<class T> // using ordered_set = tree<T, null_type, less<T>, rb_tree_tag, tree_order_statistics_node_update>; const int N = 1e5 + 42, K = 102; ll dp[K][N], a[N]; int main() { ios::sync_with_stdio(0); cin.tie(0); cout.tie(0); int n, k; cin >> n >> k; for(int i = 1; i <= n; i++) cin >> a[i]; for(int i = 1; i <= k; i++) for(int j = 1; j <= n; j++) dp[i][j] = 1e18 + 42; dp[1][1] = a[1]; for(int i = 2; i <= n; i++) dp[1][i] = max(dp[1][i - 1], a[i]); for(int ck = 2; ck <= k; ck++) { stack<pair<ll,ll> > av; for(int j = ck; j <= n; j++) { ll cur = dp[ck - 1][j - 1]; while(!av.empty() && a[av.top().se] <= a[j]) { cur = min(cur, av.top().se); av.pop(); } if(!av.empty()) dp[ck][j] = min(dp[ck][j], dp[ck][av.top().fi]); dp[ck][j] = min(dp[ck][j], cur + a[j]); av.push(mp(j, cur)); } } cout << dp[k][n]; return 0; } /* */

Compilation message (stderr)

blocks.cpp:3: warning: ignoring #pragma GCC optimization [-Wunknown-pragmas]
    3 | #pragma GCC optimization ("unroll-loops")
      |
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...