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 |
|
|
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 |