Submission #3005722


Source Code Expand

#include <bits/stdc++.h>
using namespace std;
using lint = long long int;
#define FOR(i, begin, end) for(int i=(begin);i<(end);i++)
#define IFOR(i, begin, end) for(int i=(end)-1;i>=(begin);i--)
#define REP(i, n) FOR(i,0,n)
#define IREP(i, n) IFOR(i,0,n)

int N, M;
constexpr int Nmax = 5000;
constexpr int Mmax = 200;

array<lint, Nmax> X;
array<array<lint, Mmax>, Nmax> B;

array<deque<int>, Mmax> argmax;
int l, r;

lint res;
void increment_r()
{
    r++;
    REP(m, M)
    {
        while (argmax[m].size() && B[argmax[m].back()][m] <= B[r][m]) argmax[m].pop_back();
        argmax[m].push_back(r);
    }
}

bool searchl()
{
    lint maxtmp = res;
    int marg = -1;
    REP(m, M) {
        int ltmp = argmax[m][0];
        lint sum = X[ltmp] - X[r];
        REP(ms, M) {
            sum += B[*lower_bound(argmax[ms].begin(), argmax[ms].end(), ltmp)][ms];
        }
        if (sum >= maxtmp) maxtmp = sum, marg = m;
    }

    bool flg = false;
    if (marg >= 0) {
        lint ltmp = argmax[marg][0];
        if (ltmp > l) flg = true;
        l = ltmp;
        res = maxtmp;
        REP(m, M) while (argmax[m][0] < l) argmax[m].pop_front();
    }
    return flg;
}


int main()
{
    cin >> N >> M;
    X[0] = 0;
    FOR(i, 1, N) {
        lint tmp;
        cin >> tmp;
        X[i] = X[i - 1] + tmp;
    }
    REP(i, N) REP(j, M) cin >> B[i][j];

    l = 0, r = 0; // closed [l, r]
    argmax.fill(deque<int>{0});
    res = accumulate(B[0].begin(), B[0].end(), 0LL);
    while (r < N - 1) {
        increment_r();
        while (searchl()) {}
    }
    cout << res << endl;
}

Submission Info

Submission Time
Task F - Yakiniku Restaurants
User hitonanode
Language C++14 (GCC 5.4.1)
Score 0
Code Size 1657 Byte
Status WA
Exec Time 2104 ms
Memory 8320 KB

Judge Result

Set Name Sample All
Score / Max Score 0 / 0 0 / 1000
Status
AC × 2
AC × 9
WA × 1
TLE × 20
Set Name Test Cases
Sample sample_01.txt, sample_02.txt
All sample_01.txt, sample_02.txt, subtask_1_dense_max_01.txt, subtask_1_dense_max_02.txt, subtask_1_dense_max_03.txt, subtask_1_dense_max_04.txt, subtask_1_dense_rand_01.txt, subtask_1_dense_rand_02.txt, subtask_1_dense_rand_03.txt, subtask_1_dense_rand_04.txt, subtask_1_max_01.txt, subtask_1_max_02.txt, subtask_1_max_03.txt, subtask_1_max_04.txt, subtask_1_min_01.txt, subtask_1_min_02.txt, subtask_1_rand_01.txt, subtask_1_rand_02.txt, subtask_1_rand_03.txt, subtask_1_rand_04.txt, subtask_1_widemax_01.txt, subtask_1_widemax_02.txt, subtask_1_widemax_03.txt, subtask_1_widemax_04.txt, subtask_1_widemax_05.txt, subtask_1_widemax_06.txt, subtask_1_widemax_07.txt, subtask_1_widemax_08.txt, subtask_1_widemax_09.txt, subtask_1_widemax_10.txt
Case Name Status Exec Time Memory
sample_01.txt AC 1 ms 512 KB
sample_02.txt AC 1 ms 512 KB
subtask_1_dense_max_01.txt TLE 2104 ms 8320 KB
subtask_1_dense_max_02.txt TLE 2104 ms 8320 KB
subtask_1_dense_max_03.txt TLE 2103 ms 8320 KB
subtask_1_dense_max_04.txt TLE 2104 ms 8320 KB
subtask_1_dense_rand_01.txt TLE 2103 ms 6656 KB
subtask_1_dense_rand_02.txt TLE 2103 ms 6656 KB
subtask_1_dense_rand_03.txt AC 20 ms 1664 KB
subtask_1_dense_rand_04.txt AC 195 ms 4608 KB
subtask_1_max_01.txt TLE 2104 ms 8320 KB
subtask_1_max_02.txt TLE 2103 ms 8320 KB
subtask_1_max_03.txt TLE 2104 ms 8320 KB
subtask_1_max_04.txt TLE 2104 ms 8320 KB
subtask_1_min_01.txt AC 1 ms 512 KB
subtask_1_min_02.txt AC 1 ms 512 KB
subtask_1_rand_01.txt AC 473 ms 1920 KB
subtask_1_rand_02.txt AC 66 ms 4608 KB
subtask_1_rand_03.txt AC 347 ms 4608 KB
subtask_1_rand_04.txt WA 146 ms 7808 KB
subtask_1_widemax_01.txt TLE 2104 ms 8320 KB
subtask_1_widemax_02.txt TLE 2104 ms 8320 KB
subtask_1_widemax_03.txt TLE 2104 ms 8320 KB
subtask_1_widemax_04.txt TLE 2103 ms 8320 KB
subtask_1_widemax_05.txt TLE 2104 ms 8320 KB
subtask_1_widemax_06.txt TLE 2104 ms 8320 KB
subtask_1_widemax_07.txt TLE 2104 ms 8320 KB
subtask_1_widemax_08.txt TLE 2104 ms 8320 KB
subtask_1_widemax_09.txt TLE 2104 ms 8320 KB
subtask_1_widemax_10.txt TLE 2104 ms 8320 KB