提出 #2769443


ソースコード 拡げる

#include <bits/stdc++.h>

using namespace std;

using ll = long long;
using pii = pair<int, int>;
using pll = pair<ll, ll>;
using ld = long double;

const ll MOD = 1000 * 1000 * 1000 + 7;
const ll INF = (ll)1e18;

struct PrefixSum {
    vector<ll> p;

    PrefixSum(const vector<ll>& a): p(a.begin(), a.end()) {
        for (size_t i = 1; i < p.size(); ++i)
            p[i] += p[i - 1];
    }

    ll get(int l, int r) const {
        assert(l <= r);
        assert(l >= 0);
        assert(r < p.size());
        ll ans = p[r];
        if (l > 0)
            ans -= p[l - 1];
        return ans;
    }
};

ll get_ans(ll a, ll b, ll c, ll d) {
    ll mx = max(max(a, b), max(c, d));
    ll mn = min(min(a, b), min(c, d));
    if (mn == 0)
        return INF;
    return mx - mn;
}

int get_pos(const PrefixSum& ps, int lo, int hi) {
    assert(hi - lo >= 1);
    int l = lo;
    int r = hi;
    while (r - l > 1) {
        int m = (l + r) / 2;
        if (ps.get(lo, m) < ps.get(m + 1, hi))
            l = m;
        else
            r = m;
    }
    return l;
}

int main() {
    ios_base::sync_with_stdio(0);
    cin.tie(nullptr);

    int n;
    cin >> n;
    vector<ll> a(n);
    for (auto& x : a) {
        cin >> x;
    }
    ll ans = INF;
    PrefixSum ps(a);
    for (int i = 2; i + 2 <= n; i++) {
         int p1 = get_pos(ps, 0, i - 1);
         int p2 = get_pos(ps, i, n - 1);
         for (int d1 = -5; d1 <= 5; d1++)
             for (int d2 = -5; d2 <= 5; d2++) {
                int l = p1 + d1;
                int m = i;
                int r = p2 + d2;
                if (l <= 0)
                    continue;
                if (r >= n)
                    continue;
                if (m <= l)
                    continue;
                if (r <= m)
                    continue;
                ans = min(ans, get_ans(ps.get(0, l - 1), ps.get(l, m - 1), ps.get(m, r - 1), ps.get(r, n - 1)));
             }
    }
    cout << ans << endl;
}

提出情報

提出日時
問題 D - Equal Cut
ユーザ kraskevich
言語 C++14 (GCC 5.4.1)
得点 600
コード長 2049 Byte
結果 AC
実行時間 230 ms
メモリ 3456 KiB

ジャッジ結果

セット名 Sample All
得点 / 配点 0 / 0 600 / 600
結果
AC × 3
AC × 43
セット名 テストケース
Sample sample_01.txt, sample_02.txt, sample_03.txt
All sample_01.txt, sample_02.txt, sample_03.txt, sample_01.txt, sample_02.txt, sample_03.txt, subtask_1_01.txt, subtask_1_02.txt, subtask_1_03.txt, subtask_1_04.txt, subtask_1_05.txt, subtask_1_06.txt, subtask_1_07.txt, subtask_1_08.txt, subtask_1_09.txt, subtask_1_10.txt, subtask_1_11.txt, subtask_1_12.txt, subtask_1_13.txt, subtask_1_14.txt, subtask_1_15.txt, subtask_1_16.txt, subtask_1_17.txt, subtask_1_18.txt, subtask_1_19.txt, subtask_1_20.txt, subtask_1_21.txt, subtask_1_22.txt, subtask_1_23.txt, subtask_1_24.txt, subtask_1_25.txt, subtask_1_26.txt, subtask_1_27.txt, subtask_1_28.txt, subtask_1_29.txt, subtask_1_30.txt, subtask_1_31.txt, subtask_1_32.txt, subtask_1_33.txt, subtask_1_34.txt, subtask_1_35.txt, subtask_1_36.txt, subtask_1_37.txt
ケース名 結果 実行時間 メモリ
sample_01.txt AC 1 ms 256 KiB
sample_02.txt AC 1 ms 256 KiB
sample_03.txt AC 1 ms 256 KiB
subtask_1_01.txt AC 1 ms 256 KiB
subtask_1_02.txt AC 210 ms 3072 KiB
subtask_1_03.txt AC 97 ms 1536 KiB
subtask_1_04.txt AC 144 ms 2176 KiB
subtask_1_05.txt AC 1 ms 256 KiB
subtask_1_06.txt AC 19 ms 640 KiB
subtask_1_07.txt AC 131 ms 2048 KiB
subtask_1_08.txt AC 46 ms 1408 KiB
subtask_1_09.txt AC 126 ms 2048 KiB
subtask_1_10.txt AC 101 ms 2688 KiB
subtask_1_11.txt AC 202 ms 3072 KiB
subtask_1_12.txt AC 57 ms 1664 KiB
subtask_1_13.txt AC 137 ms 2176 KiB
subtask_1_14.txt AC 28 ms 896 KiB
subtask_1_15.txt AC 27 ms 640 KiB
subtask_1_16.txt AC 77 ms 1920 KiB
subtask_1_17.txt AC 101 ms 1664 KiB
subtask_1_18.txt AC 4 ms 384 KiB
subtask_1_19.txt AC 208 ms 3200 KiB
subtask_1_20.txt AC 214 ms 3200 KiB
subtask_1_21.txt AC 110 ms 1792 KiB
subtask_1_22.txt AC 71 ms 1280 KiB
subtask_1_23.txt AC 185 ms 2816 KiB
subtask_1_24.txt AC 153 ms 3456 KiB
subtask_1_25.txt AC 150 ms 3456 KiB
subtask_1_26.txt AC 143 ms 3328 KiB
subtask_1_27.txt AC 132 ms 3328 KiB
subtask_1_28.txt AC 143 ms 3328 KiB
subtask_1_29.txt AC 228 ms 3456 KiB
subtask_1_30.txt AC 229 ms 3328 KiB
subtask_1_31.txt AC 228 ms 3328 KiB
subtask_1_32.txt AC 228 ms 3456 KiB
subtask_1_33.txt AC 228 ms 3328 KiB
subtask_1_34.txt AC 150 ms 3456 KiB
subtask_1_35.txt AC 230 ms 3328 KiB
subtask_1_36.txt AC 124 ms 3456 KiB
subtask_1_37.txt AC 226 ms 3328 KiB