Submission #490488

# Submission time Handle Problem Language Result Execution time Memory
490488 2021-11-27T16:06:15 Z acm Hedgehog Daniyar and Algorithms (IZhO19_sortbooks) C++14
64 / 100
1990 ms 140344 KB
#ifdef ONLINE_JUDGE
#pragma GCC optimize("Ofast,no-stack-protector,unroll-loops,fast-math,O3")
#pragma GCC target("sse,sse2,sse3,ssse3,sse4,popcnt,abm,mmx,avx,tune=native")
#endif
#include <bits/stdc++.h>
#define speed                   \
  ios_base::sync_with_stdio(0); \
  cin.tie(0);                   \
  cout.tie(0);
#define precision     \
  cout.precision(30); \
  cerr.precision(10);
#define ll long long
#define ld long double
#define pb(x) push_back(x)
#define sz(x) (int)x.size()
#define mp(x, y) make_pair(x, y)
#define all(x) x.begin(), x.end()
#define pc(x) __builtin_popcount(x)
#define pcll(x) __builtin_popcountll(x)
#define F first
#define S second
using namespace std;
mt19937_64 rng(chrono::steady_clock::now().time_since_epoch().count());
void ioi(string name) {
  freopen((name + ".in").c_str(), "r", stdin);
  freopen((name + ".out").c_str(), "w", stdout);
}
ll n, m, a[1000005], d[1000005], w[1000005], t[8000005], h[8000005],
    la[8000005], al[800005];
pair<ll, ll> c[1000005];
vector<ll> v, q[1000005];
void build(ll v, ll l, ll r) {
  if (l == r) {
    h[v] = a[l];
    return;
  }
  ll tm = (l + r) / 2;
  build(v + v, l, tm);
  build(v + v + 1, tm + 1, r);
  h[v] = max(h[v + v], h[v + v + 1]);
}
void clear(ll v) {
  t[v] = h[v];
  al[v] = 1;
  la[v] = -1;
}
void add(ll v, ll x) {
  t[v] += x;
  la[v] = max(la[v], 0LL) + x;
}
void push(ll v, ll l, ll r) {
  if (l != r) {
    if (~al[v]) {
      clear(v + v);
      clear(v + v + 1);
    }
    if (~la[v]) {
      add(v + v, la[v]);
      add(v + v + 1, la[v]);
    }
  }
  al[v] = -1;
  la[v] = -1;
}
void upd(ll v, ll l, ll r, ll x, ll y, ll z) {
  push(v, l, r);
  if (r < x || y < l) return;
  if (x <= l && r <= y) {
    if (z < 0)
      clear(v);
    else
      add(v, z);
    push(v, l, r);
    return;
  }
  ll tm = (l + r) / 2;
  upd(v + v, l, tm, x, y, z);
  upd(v + v + 1, tm + 1, r, x, y, z);
  t[v] = max(t[v + v], t[v + v + 1]);
}
ll get(ll v, ll l, ll r, ll x, ll y) {
  push(v, l, r);
  if (r < x || y < l) return -(1LL << 60);
  if (x <= l && r <= y) return t[v];
  ll tm = (l + r) / 2;
  return max(get(v + v, l, tm, x, y), get(v + v + 1, tm + 1, r, x, y));
}
int main() {
  speed;
  precision;
  // code
  memset(al, -1, sizeof al);
  cin >> n >> m;
  for (int i = 1; i <= n; i++) cin >> a[i];
  for (int i = 1; i <= m; i++) {
    ll l, r, x;
    cin >> l >> r >> x;
    c[i] = mp(r, x);
    q[l].pb(i);
  }
  for (int i = n; i >= 1; i--) {
    while (sz(v) && a[v.back()] < a[i]) v.pop_back();
    w[i] = (sz(v) ? v.back() : n + 1) - 1;
    v.pb(i);
  }
  build(1, 1, n);
  for (int i = n; i >= 1; i--) {
    if (i + 1 <= w[i]) {
      upd(1, 1, n, i + 1, w[i], -1);
      upd(1, 1, n, i + 1, w[i], a[i]);
    }
    for (auto j : q[i]) d[j] = (get(1, 1, n, i, c[j].F) <= c[j].S);
  }
  for (int i = 1; i <= m; i++) cout << d[i] << "\n";
    // endl
#ifndef ONLINE_JUDGE
  cerr << "\nTime elapsed: " << 1.0 * clock() / CLOCKS_PER_SEC << " s.\n";
#endif
  return 0;
}

Compilation message

sortbooks.cpp: In function 'void ioi(std::string)':
sortbooks.cpp:26:10: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)' declared with attribute 'warn_unused_result' [-Wunused-result]
   26 |   freopen((name + ".in").c_str(), "r", stdin);
      |   ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
sortbooks.cpp:27:10: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)' declared with attribute 'warn_unused_result' [-Wunused-result]
   27 |   freopen((name + ".out").c_str(), "w", stdout);
      |   ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# Verdict Execution time Memory Grader output
1 Correct 15 ms 30116 KB Output is correct
2 Correct 15 ms 30028 KB Output is correct
3 Correct 18 ms 30124 KB Output is correct
4 Correct 15 ms 30072 KB Output is correct
5 Correct 15 ms 30088 KB Output is correct
6 Correct 16 ms 30052 KB Output is correct
7 Correct 18 ms 30152 KB Output is correct
8 Correct 16 ms 30156 KB Output is correct
9 Correct 16 ms 30156 KB Output is correct
10 Correct 15 ms 30068 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 15 ms 30116 KB Output is correct
2 Correct 15 ms 30028 KB Output is correct
3 Correct 18 ms 30124 KB Output is correct
4 Correct 15 ms 30072 KB Output is correct
5 Correct 15 ms 30088 KB Output is correct
6 Correct 16 ms 30052 KB Output is correct
7 Correct 18 ms 30152 KB Output is correct
8 Correct 16 ms 30156 KB Output is correct
9 Correct 16 ms 30156 KB Output is correct
10 Correct 15 ms 30068 KB Output is correct
11 Correct 18 ms 30284 KB Output is correct
12 Correct 20 ms 30636 KB Output is correct
13 Correct 20 ms 30680 KB Output is correct
14 Correct 21 ms 30812 KB Output is correct
15 Correct 21 ms 30780 KB Output is correct
16 Correct 19 ms 30796 KB Output is correct
17 Correct 18 ms 30540 KB Output is correct
18 Correct 21 ms 30916 KB Output is correct
# Verdict Execution time Memory Grader output
1 Incorrect 1990 ms 140344 KB Output isn't correct
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 154 ms 42468 KB Output is correct
2 Correct 136 ms 41896 KB Output is correct
3 Correct 121 ms 43344 KB Output is correct
4 Correct 134 ms 43316 KB Output is correct
5 Correct 132 ms 43316 KB Output is correct
6 Correct 96 ms 38396 KB Output is correct
7 Correct 92 ms 38372 KB Output is correct
8 Correct 99 ms 42396 KB Output is correct
9 Correct 53 ms 33664 KB Output is correct
10 Correct 96 ms 42364 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 15 ms 30116 KB Output is correct
2 Correct 15 ms 30028 KB Output is correct
3 Correct 18 ms 30124 KB Output is correct
4 Correct 15 ms 30072 KB Output is correct
5 Correct 15 ms 30088 KB Output is correct
6 Correct 16 ms 30052 KB Output is correct
7 Correct 18 ms 30152 KB Output is correct
8 Correct 16 ms 30156 KB Output is correct
9 Correct 16 ms 30156 KB Output is correct
10 Correct 15 ms 30068 KB Output is correct
11 Correct 18 ms 30284 KB Output is correct
12 Correct 20 ms 30636 KB Output is correct
13 Correct 20 ms 30680 KB Output is correct
14 Correct 21 ms 30812 KB Output is correct
15 Correct 21 ms 30780 KB Output is correct
16 Correct 19 ms 30796 KB Output is correct
17 Correct 18 ms 30540 KB Output is correct
18 Correct 21 ms 30916 KB Output is correct
19 Correct 335 ms 54928 KB Output is correct
20 Correct 348 ms 54776 KB Output is correct
21 Correct 265 ms 53400 KB Output is correct
22 Correct 267 ms 53524 KB Output is correct
23 Correct 264 ms 53436 KB Output is correct
24 Correct 201 ms 47692 KB Output is correct
25 Correct 196 ms 47744 KB Output is correct
26 Correct 231 ms 53180 KB Output is correct
27 Correct 235 ms 53240 KB Output is correct
28 Correct 244 ms 55840 KB Output is correct
29 Correct 254 ms 56548 KB Output is correct
30 Correct 257 ms 56592 KB Output is correct
31 Correct 261 ms 56624 KB Output is correct
32 Correct 260 ms 56468 KB Output is correct
33 Correct 262 ms 56624 KB Output is correct
34 Correct 181 ms 46556 KB Output is correct
35 Correct 179 ms 46632 KB Output is correct
36 Correct 186 ms 46668 KB Output is correct
37 Correct 184 ms 46724 KB Output is correct
38 Correct 182 ms 46636 KB Output is correct
39 Correct 233 ms 54880 KB Output is correct
40 Correct 165 ms 47000 KB Output is correct
41 Correct 206 ms 54560 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 15 ms 30116 KB Output is correct
2 Correct 15 ms 30028 KB Output is correct
3 Correct 18 ms 30124 KB Output is correct
4 Correct 15 ms 30072 KB Output is correct
5 Correct 15 ms 30088 KB Output is correct
6 Correct 16 ms 30052 KB Output is correct
7 Correct 18 ms 30152 KB Output is correct
8 Correct 16 ms 30156 KB Output is correct
9 Correct 16 ms 30156 KB Output is correct
10 Correct 15 ms 30068 KB Output is correct
11 Correct 18 ms 30284 KB Output is correct
12 Correct 20 ms 30636 KB Output is correct
13 Correct 20 ms 30680 KB Output is correct
14 Correct 21 ms 30812 KB Output is correct
15 Correct 21 ms 30780 KB Output is correct
16 Correct 19 ms 30796 KB Output is correct
17 Correct 18 ms 30540 KB Output is correct
18 Correct 21 ms 30916 KB Output is correct
19 Incorrect 1990 ms 140344 KB Output isn't correct
20 Halted 0 ms 0 KB -