답안 #956192

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
956192 2024-04-01T09:29:26 Z wibulord K개의 묶음 (IZhO14_blocks) C++14
100 / 100
94 ms 3152 KB
#include <bits/stdc++.h>
#define endl '\n'
#define ll long long
#define fi first
#define se second
#define pb emplace_back
#define pii pair<int, int>
#define MASK(i) (1LL << (i))
#define BIT(x, i) ((x >> (i)) & 1)
#define sz(s) (int)((s).size())
#define all(a) a.begin(), a.end()
#define uni(a) (sort(all(a)), a.resize(unique(all(a))-a.begin()))
#define FOR(i, a, b) for (int i = (a), _b = (b); i <= _b; ++i)
#define F0R(i, b) for (int i = 0, _b = (b); i < _b; ++i)
#define FORd(i, a, b) for (int i = (a), _b = (b); i >= _b; --i)
#define F0Rd(i, b) for (int i = (b)-1; i >= 0; i--)
using namespace std;

template<typename T1,typename T2> bool ckmax(T1 &x,const T2 &y){if(x<y){x=y; return 1;} return 0;}
template<typename T1,typename T2> bool ckmin(T1 &x,const T2 &y){if(y<x){x=y; return 1;} return 0;}

const int MOD = (int)1e9 + 7;
const int mod = 998244353;
const int N = 1e5 + 1, M = 2; 

/*
     /\_/\
    (= ._.)
    / >?  \>$
*/
int n, s;
int a[N], l[N], mn[N], dp[N][M];

void sol(void){
    cin >> n >> s;
    FOR(i, 1, n) cin >> a[i]; 
    FOR(i, 1, n) for(l[i] = i-1; l[i] > 0 && a[l[i]] <= a[i];) l[i] = l[l[i]]; 
    memset(dp, 0x3f, sizeof(dp)); dp[1][1] = a[1];
    FOR(i, 2, n) dp[i][1] = max(dp[i-1][1], a[i]);  
    FOR(k, 2, s){  
        mn[k-1] = dp[0][0];
        FOR(i, 1, n) dp[i][k&1] = dp[0][0];
        FOR(i, k, n){
            mn[i] = dp[i-1][(k-1)&1];
            for(int j = i-1; j > l[i]; j = l[j]) mn[i] = min(mn[i], mn[j]);
            dp[i][k&1] = min(dp[l[i]][k&1], mn[i] + a[i]);
        }
    }
    cout << dp[n][s&1] << '\n';
}

signed main(void){
    #define TASK "nhap"
    if(fopen(TASK".inp", "r")){
        freopen(TASK".inp", "r", stdin);
        freopen(TASK".out", "w", stdout);
    }
    ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL);
    int t = 1;
    // cin >> t;
    while(t--) sol();
    cerr << "\nTime elapsed: " << 1000 * clock() / CLOCKS_PER_SEC << " ms\n";
}

Compilation message

blocks.cpp: In function 'int main()':
blocks.cpp:55:16: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)' declared with attribute 'warn_unused_result' [-Wunused-result]
   55 |         freopen(TASK".inp", "r", stdin);
      |         ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~
blocks.cpp:56:16: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)' declared with attribute 'warn_unused_result' [-Wunused-result]
   56 |         freopen(TASK".out", "w", stdout);
      |         ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~
# 결과 실행 시간 메모리 Grader output
1 Correct 1 ms 1116 KB Output is correct
2 Correct 1 ms 1116 KB Output is correct
3 Correct 1 ms 1116 KB Output is correct
4 Correct 1 ms 1116 KB Output is correct
5 Correct 1 ms 1116 KB Output is correct
6 Correct 1 ms 1116 KB Output is correct
7 Correct 1 ms 1116 KB Output is correct
8 Correct 1 ms 1236 KB Output is correct
9 Correct 1 ms 1116 KB Output is correct
10 Correct 1 ms 1116 KB Output is correct
11 Correct 1 ms 1116 KB Output is correct
12 Correct 1 ms 1116 KB Output is correct
13 Correct 1 ms 1164 KB Output is correct
14 Correct 1 ms 1116 KB Output is correct
15 Correct 1 ms 1236 KB Output is correct
16 Correct 1 ms 1116 KB Output is correct
17 Correct 1 ms 1116 KB Output is correct
18 Correct 1 ms 1368 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 1 ms 1116 KB Output is correct
2 Correct 1 ms 1240 KB Output is correct
3 Correct 1 ms 1112 KB Output is correct
4 Correct 1 ms 1112 KB Output is correct
5 Correct 1 ms 1368 KB Output is correct
6 Correct 1 ms 1116 KB Output is correct
7 Correct 1 ms 1112 KB Output is correct
8 Correct 1 ms 1116 KB Output is correct
9 Correct 1 ms 1116 KB Output is correct
10 Correct 1 ms 1116 KB Output is correct
11 Correct 1 ms 1116 KB Output is correct
12 Correct 1 ms 1116 KB Output is correct
13 Correct 1 ms 1116 KB Output is correct
14 Correct 1 ms 1116 KB Output is correct
15 Correct 1 ms 1116 KB Output is correct
16 Correct 1 ms 1116 KB Output is correct
17 Correct 1 ms 1116 KB Output is correct
18 Correct 1 ms 1116 KB Output is correct
19 Correct 1 ms 1116 KB Output is correct
20 Correct 1 ms 1116 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 1 ms 1116 KB Output is correct
2 Correct 1 ms 1116 KB Output is correct
3 Correct 1 ms 1116 KB Output is correct
4 Correct 1 ms 1116 KB Output is correct
5 Correct 1 ms 1116 KB Output is correct
6 Correct 1 ms 1116 KB Output is correct
7 Correct 1 ms 1116 KB Output is correct
8 Correct 1 ms 1236 KB Output is correct
9 Correct 1 ms 1116 KB Output is correct
10 Correct 1 ms 1116 KB Output is correct
11 Correct 1 ms 1116 KB Output is correct
12 Correct 1 ms 1116 KB Output is correct
13 Correct 1 ms 1164 KB Output is correct
14 Correct 1 ms 1116 KB Output is correct
15 Correct 1 ms 1236 KB Output is correct
16 Correct 1 ms 1116 KB Output is correct
17 Correct 1 ms 1116 KB Output is correct
18 Correct 1 ms 1368 KB Output is correct
19 Correct 1 ms 1116 KB Output is correct
20 Correct 1 ms 1240 KB Output is correct
21 Correct 1 ms 1112 KB Output is correct
22 Correct 1 ms 1112 KB Output is correct
23 Correct 1 ms 1368 KB Output is correct
24 Correct 1 ms 1116 KB Output is correct
25 Correct 1 ms 1112 KB Output is correct
26 Correct 1 ms 1116 KB Output is correct
27 Correct 1 ms 1116 KB Output is correct
28 Correct 1 ms 1116 KB Output is correct
29 Correct 1 ms 1116 KB Output is correct
30 Correct 1 ms 1116 KB Output is correct
31 Correct 1 ms 1116 KB Output is correct
32 Correct 1 ms 1116 KB Output is correct
33 Correct 1 ms 1116 KB Output is correct
34 Correct 1 ms 1116 KB Output is correct
35 Correct 1 ms 1116 KB Output is correct
36 Correct 1 ms 1116 KB Output is correct
37 Correct 1 ms 1116 KB Output is correct
38 Correct 1 ms 1116 KB Output is correct
39 Correct 1 ms 1112 KB Output is correct
40 Correct 1 ms 1232 KB Output is correct
41 Correct 1 ms 1116 KB Output is correct
42 Correct 1 ms 1240 KB Output is correct
43 Correct 1 ms 1116 KB Output is correct
44 Correct 1 ms 1116 KB Output is correct
45 Correct 1 ms 1116 KB Output is correct
46 Correct 1 ms 1112 KB Output is correct
47 Correct 1 ms 1116 KB Output is correct
48 Correct 1 ms 1116 KB Output is correct
49 Correct 1 ms 1116 KB Output is correct
50 Correct 1 ms 1116 KB Output is correct
51 Correct 1 ms 1116 KB Output is correct
52 Correct 1 ms 1116 KB Output is correct
53 Correct 1 ms 1116 KB Output is correct
54 Correct 1 ms 1116 KB Output is correct
55 Correct 1 ms 1116 KB Output is correct
56 Correct 1 ms 1116 KB Output is correct
57 Correct 1 ms 1116 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 1 ms 1116 KB Output is correct
2 Correct 1 ms 1116 KB Output is correct
3 Correct 1 ms 1116 KB Output is correct
4 Correct 1 ms 1116 KB Output is correct
5 Correct 1 ms 1116 KB Output is correct
6 Correct 1 ms 1116 KB Output is correct
7 Correct 1 ms 1116 KB Output is correct
8 Correct 1 ms 1236 KB Output is correct
9 Correct 1 ms 1116 KB Output is correct
10 Correct 1 ms 1116 KB Output is correct
11 Correct 1 ms 1116 KB Output is correct
12 Correct 1 ms 1116 KB Output is correct
13 Correct 1 ms 1164 KB Output is correct
14 Correct 1 ms 1116 KB Output is correct
15 Correct 1 ms 1236 KB Output is correct
16 Correct 1 ms 1116 KB Output is correct
17 Correct 1 ms 1116 KB Output is correct
18 Correct 1 ms 1368 KB Output is correct
19 Correct 1 ms 1116 KB Output is correct
20 Correct 1 ms 1240 KB Output is correct
21 Correct 1 ms 1112 KB Output is correct
22 Correct 1 ms 1112 KB Output is correct
23 Correct 1 ms 1368 KB Output is correct
24 Correct 1 ms 1116 KB Output is correct
25 Correct 1 ms 1112 KB Output is correct
26 Correct 1 ms 1116 KB Output is correct
27 Correct 1 ms 1116 KB Output is correct
28 Correct 1 ms 1116 KB Output is correct
29 Correct 1 ms 1116 KB Output is correct
30 Correct 1 ms 1116 KB Output is correct
31 Correct 1 ms 1116 KB Output is correct
32 Correct 1 ms 1116 KB Output is correct
33 Correct 1 ms 1116 KB Output is correct
34 Correct 1 ms 1116 KB Output is correct
35 Correct 1 ms 1116 KB Output is correct
36 Correct 1 ms 1116 KB Output is correct
37 Correct 1 ms 1116 KB Output is correct
38 Correct 1 ms 1116 KB Output is correct
39 Correct 1 ms 1112 KB Output is correct
40 Correct 1 ms 1232 KB Output is correct
41 Correct 1 ms 1116 KB Output is correct
42 Correct 1 ms 1240 KB Output is correct
43 Correct 1 ms 1116 KB Output is correct
44 Correct 1 ms 1116 KB Output is correct
45 Correct 1 ms 1116 KB Output is correct
46 Correct 1 ms 1112 KB Output is correct
47 Correct 1 ms 1116 KB Output is correct
48 Correct 1 ms 1116 KB Output is correct
49 Correct 1 ms 1116 KB Output is correct
50 Correct 1 ms 1116 KB Output is correct
51 Correct 1 ms 1116 KB Output is correct
52 Correct 1 ms 1116 KB Output is correct
53 Correct 1 ms 1116 KB Output is correct
54 Correct 1 ms 1116 KB Output is correct
55 Correct 1 ms 1116 KB Output is correct
56 Correct 1 ms 1116 KB Output is correct
57 Correct 1 ms 1116 KB Output is correct
58 Correct 3 ms 1372 KB Output is correct
59 Correct 4 ms 1868 KB Output is correct
60 Correct 6 ms 1880 KB Output is correct
61 Correct 27 ms 2056 KB Output is correct
62 Correct 71 ms 2908 KB Output is correct
63 Correct 9 ms 2908 KB Output is correct
64 Correct 38 ms 3152 KB Output is correct
65 Correct 1 ms 1116 KB Output is correct
66 Correct 1 ms 1116 KB Output is correct
67 Correct 1 ms 1116 KB Output is correct
68 Correct 1 ms 1116 KB Output is correct
69 Correct 1 ms 1116 KB Output is correct
70 Correct 1 ms 1116 KB Output is correct
71 Correct 8 ms 1372 KB Output is correct
72 Correct 2 ms 1372 KB Output is correct
73 Correct 3 ms 1368 KB Output is correct
74 Correct 5 ms 1884 KB Output is correct
75 Correct 6 ms 1868 KB Output is correct
76 Correct 30 ms 1884 KB Output is correct
77 Correct 86 ms 3064 KB Output is correct
78 Correct 9 ms 2904 KB Output is correct
79 Correct 43 ms 2908 KB Output is correct
80 Correct 9 ms 2648 KB Output is correct
81 Correct 16 ms 2908 KB Output is correct
82 Correct 94 ms 2908 KB Output is correct
83 Correct 1 ms 1112 KB Output is correct
84 Correct 1 ms 1116 KB Output is correct
85 Correct 6 ms 1372 KB Output is correct
86 Correct 1 ms 1372 KB Output is correct
87 Correct 3 ms 1372 KB Output is correct
88 Correct 4 ms 1884 KB Output is correct
89 Correct 5 ms 2032 KB Output is correct
90 Correct 23 ms 2012 KB Output is correct
91 Correct 67 ms 3080 KB Output is correct
92 Correct 9 ms 2908 KB Output is correct
93 Correct 34 ms 2908 KB Output is correct
94 Correct 2 ms 1368 KB Output is correct
95 Correct 6 ms 1372 KB Output is correct
96 Correct 1 ms 1116 KB Output is correct
97 Correct 1 ms 1116 KB Output is correct
98 Correct 1 ms 1236 KB Output is correct
99 Correct 1 ms 1116 KB Output is correct