답안 #821910

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
821910 2023-08-11T21:05:31 Z PurpleCrayon Dungeon 3 (JOI21_ho_t5) C++17
0 / 100
4000 ms 6868 KB
#include <bits/stdc++.h>
using namespace std;

#define sz(v) int(v.size())
#define ar array
typedef long long ll;
const int N = 5e2+10, MOD = 998244353;

#pragma GCC optimize("O3,unroll-loops")
#pragma GCC target("avx2,bmi,bmi2,lzcnt,popcnt")

void solve() {
    int n, m; cin >> n >> m;
    vector<ll> a(n); for (auto& x : a) cin >> x;
    vector<ll> b(n); for (auto& x : b) cin >> x;

    vector<int> prv(n, -1), nxt(n, n);
    {
        vector<int> st;
        for (int i = 0; i < n; i++) {
            while (sz(st) && b[st.back()] >= b[i]) st.pop_back();
            if (sz(st)) prv[i] = st.back();
            st.push_back(i);
        }
    }

    {
        vector<int> st;
        for (int i = n-1; i >= 0; i--) {
            while (sz(st) && b[st.back()] > b[i]) st.pop_back();
            if (sz(st)) nxt[i] = st.back();
            st.push_back(i);
        }
    }

    vector<ll> ps(n);
    for (int i = 0; i < n; i++) {
        ps[i] = a[i];
        if (i) ps[i] += ps[i-1];
    }

    auto sum = [&](int l, int r) {
        return ps[r] - (l ? ps[l-1] : 0LL);
    };

    while (m--) {
        int l, r, cap; cin >> l >> r >> cap, --l, --r;

        bool bad = 0;
        for (int i = l; i < r; i++) {
            if (a[i] > cap) {
                bad = 1;
            }
        }

        if (bad) {
            cout << -1 << '\n';
            continue;
        }

        ll ans = 0;
        for (int i = l; i < r; i++) {
            ll lose = (prv[i] >= l ? cap - sum(prv[i], i-1) : 0LL);
            ll cur = min((long long) cap, sum(i, min(r, nxt[i])-1)) - lose;
            cur = max(cur, 0LL);

            ans += cur * b[i];
        }
        
        cout << ans << '\n';
    }
}

int main() {
    ios::sync_with_stdio(false); cin.tie(0);
    int T = 1;
    // cin >> T;
    while (T--) solve();
}

# 결과 실행 시간 메모리 Grader output
1 Incorrect 13 ms 340 KB Output isn't correct
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 2576 ms 2776 KB Output isn't correct
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Execution timed out 4074 ms 6868 KB Time limit exceeded
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 13 ms 340 KB Output isn't correct
2 Halted 0 ms 0 KB -