# | 제출 시각 | 아이디 | 문제 | 언어 | 결과 | 실행 시간 | 메모리 |
---|---|---|---|---|---|---|---|
701340 | 2023-02-21T02:29:09 Z | Do_you_copy | K개의 묶음 (IZhO14_blocks) | C++17 | 32 ms | 80888 KB |
#include <bits/stdc++.h> #define fi first #define se second #define faster ios_base::sync_with_stdio(0); cin.tie(0); #define pb push_back using namespace std; using ll = long long; using pii = pair <int, int>; const int maxN = 1e5 + 1; const ll inf = 0x3f3f3f3f3f3f3f3f; //const int Mod = int n, k; ll dp[maxN][103]; int a[maxN]; void Solve(int x){ vector <pair <int, ll>> S; vector <ll> T; S.pb({0, dp[0][x - 1]}); T.pb(dp[0][x - 1]); for (int i = 1; i <= n; ++i){ ll minn = inf; while (!S.empty() && a[S.back().fi] <= a[i]){ minn = min(minn, S.back().se); T.pop_back(); S.pop_back(); } dp[i][x] = min(minn + a[i], T.back()); minn = min(minn, dp[i][x - 1]); S.pb({i, minn}); T.pb(min(T.back(), a[i] + minn)); } } void Init(){ cin >> n >> k; memset(dp, 0x3f, sizeof(dp)); for (int i = 1; i <= n; ++i){ cin >> a[i]; } dp[0][0] = 0; for (int i = 1; i <= k; ++i){ Solve(i); } cout << dp[n][k]; } #define taskname "test" signed main(){ faster if (fopen(taskname ".inp", "r")){ freopen(taskname ".inp", "r", stdin); freopen(taskname ".out", "w", stdout); } int tt = 1; //cin >> tt; while (tt--){ Init(); } if (fopen("timeout.txt", "r")){ ofstream timeout("timeout.txt"); cerr << "Time elapsed: " << signed(double(clock()) / CLOCKS_PER_SEC * 1000) << "ms\n"; timeout << signed(double(clock()) / CLOCKS_PER_SEC * 1000); timeout.close(); } }
Compilation message
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Correct | 31 ms | 80844 KB | Output is correct |
2 | Incorrect | 31 ms | 80872 KB | Output isn't correct |
3 | Halted | 0 ms | 0 KB | - |
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Correct | 31 ms | 80812 KB | Output is correct |
2 | Incorrect | 32 ms | 80888 KB | Output isn't correct |
3 | Halted | 0 ms | 0 KB | - |
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Correct | 31 ms | 80844 KB | Output is correct |
2 | Incorrect | 31 ms | 80872 KB | Output isn't correct |
3 | Halted | 0 ms | 0 KB | - |
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Correct | 31 ms | 80844 KB | Output is correct |
2 | Incorrect | 31 ms | 80872 KB | Output isn't correct |
3 | Halted | 0 ms | 0 KB | - |