제출 #1095192

#제출 시각아이디문제언어결과실행 시간메모리
1095192phong오렌지 출하 (JOI16_ho_t1)C++17
100 / 100
182 ms6488 KiB
#include<bits/stdc++.h>
#define ll long long
#define int long long
const int nmax = 2e4 + 5, N = 2e6;
const ll oo = 1e12 + 5, base = 3001;
const int lg = 17,mod = 998244353;
#define pii pair<int, int>
#define fi first
#define se second
#define endl "\n"
#define debug(a, n) for(int i = 1; i <= n; ++i) cout << a[i] << ' '; cout << "\n";
using namespace std;

int n, m, k, a[nmax];
int ma[nmax][lg + 1], mi[nmax][lg + 1];
int f[nmax];

int calc(int i, int j, int idx){
    if(idx == 0){
        int k = __lg(j - i + 1);
        return min(mi[i][k], mi[j - (1 << k) + 1][k]);
    }
    else{
        int k = __lg(j - i + 1);
        return max(ma[i][k], ma[j - (1 <<k) + 1][k]);
    }
}
main(){
    ios_base::sync_with_stdio(0);
    cin.tie(0);cout.tie(0);
//    freopen("FRIENDS.inp", "r", stdin);
//    freopen("FRIENDS.out", "w", stdout);
    cin >> n >> m >> k;;
    for(int i = 1; i <= n; ++i) cin >> a[i];
    for(int i = 1; i <= n; ++i){
        mi[i][0] = a[i];
        ma[i][0] = a[i];
    }
    for(int j = 1; j <= lg; ++j){
        for(int i = 1; i + (1 << j) - 1 <= n; ++i){
            mi[i][j] = min(mi[i][j - 1], mi[i + (1 << (j - 1))][j - 1]);
            ma[i][j] = max(ma[i][j - 1], ma[i + (1 << (j - 1))][j - 1]);
        }
    }
    for(int i = 1; i <= n; ++i){
        f[i] = 1e18;
        for(int j = max(1ll, i - m + 1); j <= i; ++j){
            int cost = (i - j + 1) * (calc(j, i, 1) - calc(j, i, 0)) + k;
            f[i] = min(f[i], f[j - 1] + cost);
        }
    }
//    int pos = 1;
//    while(pos <= n){
//        int x;
//        cin >> x;
//        int i = pos + x - 1;
//        int j = pos;
//        int cost = (i - j + 1) * (calc(j, i, 1) - calc(j, i, 0)) + k;
//        f[n] += cost;
//        pos = i + 1;
//    }
    cout << f[n];
}
/*
16 4 12
3
10
13
10
19
9
12
16
11
2
19
9
13
2
13
19

*/

컴파일 시 표준 에러 (stderr) 메시지

2016_ho_t1.cpp:28:1: warning: ISO C++ forbids declaration of 'main' with no type [-Wreturn-type]
   28 | main(){
      | ^~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...