Submission #1693787


Source Code Expand

#include <cstdio>
#include <iostream>
#include <stack>
using namespace std;

typedef pair <int, int> pii;
typedef long long LL;
const int N = 5007;
const int M = 202;

LL G[N][N], D[N];
int b[M][N], l[N], n, m;
stack <pii> st;

inline void add(int l, int m, int r, int val) {
  G[l][m] += val;
  G[l][r + 1] -= val;
  G[m + 1][m] -= val;
  G[m + 1][r + 1] += val;
}

int main() {
  scanf("%d%d", &n, &m);
  for (int i = 2; i <= n; i ++) {
    scanf("%lld", &D[i]);
    D[i] += D[i - 1];
  }
  for (int i = 1; i <= n; i ++)
    for (int j = 1; j <= m; j ++) scanf("%d", &b[j][i]);
  for (int j = 1; j <= m; j ++) {
    while (!st.empty()) st.pop();
    st.push(make_pair(0, 2e9));
    for (int i = 1; i <= n; i ++) {
      while (st.top().second < b[j][i]) st.pop();
      l[i] = st.top().first + 1;
      st.push(make_pair(i, b[j][i]));
    }
    while (!st.empty()) st.pop();
    st.push(make_pair(n + 1, 2e9));
    for (int i = n; i >= 1; i --) {
      while (st.top().second <= b[j][i]) st.pop();
      add(l[i], i, st.top().first - 1, b[j][i]);
      st.push(make_pair(i, b[j][i]));
    }
  }
  LL ans = 0;
  for (int i = 1; i <= n; i ++)
    for (int j = 1; j <= n; j ++) {
      G[i][j] += G[i - 1][j] + G[i][j - 1] - G[i - 1][j - 1];
      if (i <= j) ans = max(ans, D[i] - D[j] + G[i][j]);
    }
  printf("%lld\n", ans);
  return 0;
}

Submission Info

Submission Time
Task F - Yakiniku Restaurants
User The_Unbeatable
Language C++14 (GCC 5.4.1)
Score 1000
Code Size 1397 Byte
Status AC
Exec Time 295 ms
Memory 199808 KB

Compile Error

./Main.cpp: In function ‘int main()’:
./Main.cpp:23:24: warning: ignoring return value of ‘int scanf(const char*, ...)’, declared with attribute warn_unused_result [-Wunused-result]
   scanf("%d%d", &n, &m);
                        ^
./Main.cpp:25:25: warning: ignoring return value of ‘int scanf(const char*, ...)’, declared with attribute warn_unused_result [-Wunused-result]
     scanf("%lld", &D[i]);
                         ^
./Main.cpp:29:56: warning: ignoring return value of ‘int scanf(const char*, ...)’, declared with attribute warn_unused_result [-Wunused-result]
     for (int j = 1; j <= m; j ++) scanf("%d", &b[j][i]);
                                                        ^

Judge Result

Set Name Sample All
Score / Max Score 0 / 0 1000 / 1000
Status
AC × 2
AC × 30
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 3 ms 4352 KB
sample_02.txt AC 3 ms 4352 KB
subtask_1_dense_max_01.txt AC 291 ms 199808 KB
subtask_1_dense_max_02.txt AC 293 ms 199808 KB
subtask_1_dense_max_03.txt AC 289 ms 199808 KB
subtask_1_dense_max_04.txt AC 293 ms 199808 KB
subtask_1_dense_rand_01.txt AC 177 ms 141312 KB
subtask_1_dense_rand_02.txt AC 196 ms 149632 KB
subtask_1_dense_rand_03.txt AC 16 ms 33152 KB
subtask_1_dense_rand_04.txt AC 58 ms 80896 KB
subtask_1_max_01.txt AC 289 ms 199808 KB
subtask_1_max_02.txt AC 295 ms 199808 KB
subtask_1_max_03.txt AC 291 ms 199808 KB
subtask_1_max_04.txt AC 292 ms 199808 KB
subtask_1_min_01.txt AC 3 ms 4352 KB
subtask_1_min_02.txt AC 2 ms 4352 KB
subtask_1_rand_01.txt AC 41 ms 41984 KB
subtask_1_rand_02.txt AC 46 ms 76416 KB
subtask_1_rand_03.txt AC 51 ms 60672 KB
subtask_1_rand_04.txt AC 148 ms 187264 KB
subtask_1_widemax_01.txt AC 288 ms 199808 KB
subtask_1_widemax_02.txt AC 292 ms 199808 KB
subtask_1_widemax_03.txt AC 293 ms 199808 KB
subtask_1_widemax_04.txt AC 290 ms 199808 KB
subtask_1_widemax_05.txt AC 292 ms 199808 KB
subtask_1_widemax_06.txt AC 289 ms 199808 KB
subtask_1_widemax_07.txt AC 293 ms 199808 KB
subtask_1_widemax_08.txt AC 291 ms 199808 KB
subtask_1_widemax_09.txt AC 294 ms 199808 KB
subtask_1_widemax_10.txt AC 289 ms 199808 KB