Submission #502694

# Submission time Handle Problem Language Result Execution time Memory
502694 2022-01-06T13:00:20 Z tim Hedgehog Daniyar and Algorithms (IZhO19_sortbooks) C++11
64 / 100
3000 ms 247348 KB
#include <bits/stdc++.h>

#define fi first
#define se second
#define pb push_back
#define mp make_pair
#define y1 tim
#define endl "\n"

#define sz(x) (long long)(x).size()
#define all(x) (x).begin(), (x).end()

using namespace std;

mt19937_64 rng(chrono::system_clock::now().time_since_epoch().count());

int w[1000010], mx[4000010], ans[4000010], Max, y, l, r, k, n, m;
vector <int> v[4000010];

void build (int l, int r, int x)
{
    if (r < l) return;
    if (l == r)
    {
        mx[x] = w[l];
        v[x].push_back(w[l]);
        ans[x] = 0;
        return;
    }
    build (l, (l + r) / 2, x * 2);
    build ((l + r) / 2 + 1, r, x * 2 + 1);
    mx[x] = max (mx[x * 2], mx[x * 2 + 1]);
    v[x] = v[x * 2];
    ans[x] = max (ans[x * 2], ans[x * 2 + 1]);
    int mx1 = -1;
    for (int i = 0; i < v[x * 2 + 1].size(); i++)
    {
        if (v[x * 2 + 1][i] < mx[x * 2]) mx1 = v[x * 2 + 1][i];
        v[x].push_back(v[x * 2 + 1][i]);
    }
    sort (v[x].begin(), v[x].end());
    if (mx1 != -1) ans[x] = max (ans[x], mx[x * 2] + mx1);
}

void get (int l, int r, int tl, int tr, int x)
{
    if (r < l) return;
    if (tl > r) return;
    if (tr < l) return;
    tl = max (l, tl);
    tr = min (r, tr);
    if (l == tl and r == tr)
    {
        if (Max == 0 and y == 0)
        {
            y = ans[x];
            Max = mx[x];
        }
        else
        {
            y = max (y, ans[x]);
            int pos = lower_bound(v[x].begin(), v[x].end(), Max) - v[x].begin();
            if (pos != 0)
            {
                pos--;
                y = max (y, Max + v[x][pos]);
            }
            Max = max (Max, mx[x]);
        }
        return;
    }
    get (l, (l + r) / 2, tl, tr, x * 2);
    get ((l + r) / 2 + 1, r, tl, tr, x * 2 + 1);
}

int main()
{
    srand(time(0));
    ios_base::sync_with_stdio(0);
    cin.tie(0);
    cin >> n >> m;
    for (int i = 1; i <= n; i++)
    {
        cin >> w[i];
    }
    build (1, n, 1);
    for (int i = 1; i <= m; i++)
    {
        cin >> l >> r >> k;
        y = 0;
        Max = 0;
        get (1, n, l, r, 1);
        if (y <= k) cout << 1 << endl;
        else cout << 0 << endl;
    }
    return 0;
}

Compilation message

sortbooks.cpp: In function 'void build(int, int, int)':
sortbooks.cpp:36:23: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   36 |     for (int i = 0; i < v[x * 2 + 1].size(); i++)
      |                     ~~^~~~~~~~~~~~~~~~~~~~~
# Verdict Execution time Memory Grader output
1 Correct 43 ms 94276 KB Output is correct
2 Correct 49 ms 94200 KB Output is correct
3 Correct 53 ms 94264 KB Output is correct
4 Correct 46 ms 94268 KB Output is correct
5 Correct 54 ms 94160 KB Output is correct
6 Correct 55 ms 94300 KB Output is correct
7 Correct 52 ms 94272 KB Output is correct
8 Correct 48 ms 94228 KB Output is correct
9 Correct 44 ms 94288 KB Output is correct
10 Correct 48 ms 94224 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 43 ms 94276 KB Output is correct
2 Correct 49 ms 94200 KB Output is correct
3 Correct 53 ms 94264 KB Output is correct
4 Correct 46 ms 94268 KB Output is correct
5 Correct 54 ms 94160 KB Output is correct
6 Correct 55 ms 94300 KB Output is correct
7 Correct 52 ms 94272 KB Output is correct
8 Correct 48 ms 94228 KB Output is correct
9 Correct 44 ms 94288 KB Output is correct
10 Correct 48 ms 94224 KB Output is correct
11 Correct 51 ms 94500 KB Output is correct
12 Correct 52 ms 94888 KB Output is correct
13 Correct 59 ms 94964 KB Output is correct
14 Correct 51 ms 95016 KB Output is correct
15 Correct 52 ms 95040 KB Output is correct
16 Correct 54 ms 95024 KB Output is correct
17 Correct 57 ms 94852 KB Output is correct
18 Correct 48 ms 94996 KB Output is correct
# Verdict Execution time Memory Grader output
1 Execution timed out 3089 ms 247348 KB Time limit exceeded
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 255 ms 108528 KB Output is correct
2 Correct 242 ms 109400 KB Output is correct
3 Correct 212 ms 109380 KB Output is correct
4 Correct 226 ms 109264 KB Output is correct
5 Correct 234 ms 109300 KB Output is correct
6 Correct 181 ms 109368 KB Output is correct
7 Correct 210 ms 109284 KB Output is correct
8 Correct 229 ms 109284 KB Output is correct
9 Correct 83 ms 95188 KB Output is correct
10 Correct 176 ms 109332 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 43 ms 94276 KB Output is correct
2 Correct 49 ms 94200 KB Output is correct
3 Correct 53 ms 94264 KB Output is correct
4 Correct 46 ms 94268 KB Output is correct
5 Correct 54 ms 94160 KB Output is correct
6 Correct 55 ms 94300 KB Output is correct
7 Correct 52 ms 94272 KB Output is correct
8 Correct 48 ms 94228 KB Output is correct
9 Correct 44 ms 94288 KB Output is correct
10 Correct 48 ms 94224 KB Output is correct
11 Correct 51 ms 94500 KB Output is correct
12 Correct 52 ms 94888 KB Output is correct
13 Correct 59 ms 94964 KB Output is correct
14 Correct 51 ms 95016 KB Output is correct
15 Correct 52 ms 95040 KB Output is correct
16 Correct 54 ms 95024 KB Output is correct
17 Correct 57 ms 94852 KB Output is correct
18 Correct 48 ms 94996 KB Output is correct
19 Correct 645 ms 124648 KB Output is correct
20 Correct 591 ms 124592 KB Output is correct
21 Correct 505 ms 124364 KB Output is correct
22 Correct 539 ms 124420 KB Output is correct
23 Correct 483 ms 124484 KB Output is correct
24 Correct 388 ms 124528 KB Output is correct
25 Correct 339 ms 124420 KB Output is correct
26 Correct 440 ms 124452 KB Output is correct
27 Correct 477 ms 124404 KB Output is correct
28 Correct 452 ms 124472 KB Output is correct
29 Correct 482 ms 124628 KB Output is correct
30 Correct 452 ms 124440 KB Output is correct
31 Correct 473 ms 124408 KB Output is correct
32 Correct 443 ms 124404 KB Output is correct
33 Correct 496 ms 124444 KB Output is correct
34 Correct 403 ms 124400 KB Output is correct
35 Correct 381 ms 124380 KB Output is correct
36 Correct 341 ms 124420 KB Output is correct
37 Correct 383 ms 124468 KB Output is correct
38 Correct 389 ms 124472 KB Output is correct
39 Correct 448 ms 124356 KB Output is correct
40 Correct 358 ms 113560 KB Output is correct
41 Correct 455 ms 124528 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 43 ms 94276 KB Output is correct
2 Correct 49 ms 94200 KB Output is correct
3 Correct 53 ms 94264 KB Output is correct
4 Correct 46 ms 94268 KB Output is correct
5 Correct 54 ms 94160 KB Output is correct
6 Correct 55 ms 94300 KB Output is correct
7 Correct 52 ms 94272 KB Output is correct
8 Correct 48 ms 94228 KB Output is correct
9 Correct 44 ms 94288 KB Output is correct
10 Correct 48 ms 94224 KB Output is correct
11 Correct 51 ms 94500 KB Output is correct
12 Correct 52 ms 94888 KB Output is correct
13 Correct 59 ms 94964 KB Output is correct
14 Correct 51 ms 95016 KB Output is correct
15 Correct 52 ms 95040 KB Output is correct
16 Correct 54 ms 95024 KB Output is correct
17 Correct 57 ms 94852 KB Output is correct
18 Correct 48 ms 94996 KB Output is correct
19 Execution timed out 3089 ms 247348 KB Time limit exceeded
20 Halted 0 ms 0 KB -