Submission #414052

# Submission time Handle Problem Language Result Execution time Memory
414052 2021-05-29T20:13:10 Z Tc14 A Difficult(y) Choice (BOI21_books) C++17
60 / 100
2 ms 292 KB
//#pragma GCC optimize("O3")
#include <bits/stdc++.h>
#include "books.h"
using namespace std;
#define ve vector
typedef long long ll;
typedef pair<int, int> pii;
const int INF = 1e9 + 10;

map<int, ll> M;

ll B(int i) {
    if (M.find(i) == M.end()) M[i] = skim(i + 1);
    return M[i];
}

void solve(int n, int k, ll a, int s) {

    int lo = 0;
    int hi = n - 1;

    while (lo < hi) {

        int m = (lo + hi) / 2;

        if (B(m) >= a) hi = m;
        else lo = m + 1;
    }

    int z = lo;
    ll x = B(z);

    if (x >= a) {
        if (z >= k - 1) {
            ll sum = x;
            ve<int> I(k);
            I[k - 1] = z + 1;
            for (int i = 0; i < k - 1; i++) {
                sum += B(i);
                I[i] = i + 1;
            }
            if (sum <= 2 * a) {
                answer(I);
                return;
            }
        }
    }
    else z = n;

    if (z >= k) {

        ll sum = 0;
        ve<int> I(k);
        for (int i = 0; i < k; i++) {
            sum += B(i);
            I[i] = i + 1;
        }

        for (int i = k - 1; i >= 0; i--) {
            hi = z - k + i;
            lo = i;

            sum -= B(i);
            if (sum + B(hi) >= a) {

                while (lo < hi) {

                    int m = (lo + hi) / 2;

                    if (sum + B(m) < a) lo = m + 1;
                    else if (sum + B(m) > 2 * a) hi = m;
                    else {
                        I[i] = m + 1;
                        answer(I);
                        return;
                    }

                }

                if (a <= sum + B(lo) && sum + B(lo) <= 2 * a) {
                    I[i] = lo + 1;
                    answer(I);
                    return;
                }

            }
            else {
                sum += B(hi);
                I[i] = hi + 1;
            }
        }
    }

    impossible();
}
# Verdict Execution time Memory Grader output
1 Correct 1 ms 200 KB Output is correct
2 Correct 1 ms 200 KB Output is correct
3 Correct 1 ms 200 KB Output is correct
4 Correct 1 ms 200 KB Output is correct
5 Correct 1 ms 200 KB Output is correct
6 Correct 1 ms 200 KB Output is correct
7 Correct 1 ms 200 KB Output is correct
8 Correct 1 ms 200 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 1 ms 200 KB Output is correct
2 Correct 1 ms 200 KB Output is correct
3 Correct 1 ms 280 KB Output is correct
4 Correct 1 ms 200 KB Output is correct
5 Correct 1 ms 200 KB Output is correct
6 Correct 1 ms 200 KB Output is correct
7 Correct 1 ms 200 KB Output is correct
8 Correct 1 ms 200 KB Output is correct
9 Correct 1 ms 200 KB Output is correct
10 Correct 1 ms 200 KB Output is correct
11 Correct 1 ms 292 KB Output is correct
12 Correct 1 ms 288 KB Output is correct
13 Correct 1 ms 280 KB Output is correct
14 Correct 1 ms 200 KB Output is correct
15 Correct 1 ms 200 KB Output is correct
16 Correct 1 ms 200 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 1 ms 200 KB Output is correct
2 Correct 2 ms 200 KB Output is correct
3 Correct 1 ms 200 KB Output is correct
4 Correct 1 ms 200 KB Output is correct
5 Correct 1 ms 200 KB Output is correct
6 Correct 1 ms 288 KB Output is correct
7 Correct 1 ms 200 KB Output is correct
8 Correct 1 ms 284 KB Output is correct
9 Correct 1 ms 200 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 1 ms 200 KB Output is correct
2 Correct 2 ms 200 KB Output is correct
3 Correct 1 ms 200 KB Output is correct
4 Correct 1 ms 200 KB Output is correct
5 Correct 1 ms 200 KB Output is correct
6 Correct 1 ms 288 KB Output is correct
7 Correct 1 ms 200 KB Output is correct
8 Correct 1 ms 284 KB Output is correct
9 Correct 1 ms 200 KB Output is correct
10 Correct 1 ms 200 KB Output is correct
11 Correct 1 ms 200 KB Output is correct
12 Correct 2 ms 200 KB Output is correct
13 Correct 1 ms 200 KB Output is correct
14 Correct 1 ms 200 KB Output is correct
15 Correct 1 ms 200 KB Output is correct
16 Correct 1 ms 200 KB Output is correct
17 Correct 1 ms 280 KB Output is correct
18 Correct 1 ms 272 KB Output is correct
19 Correct 1 ms 200 KB Output is correct
20 Correct 1 ms 200 KB Output is correct
21 Correct 1 ms 200 KB Output is correct
22 Correct 1 ms 200 KB Output is correct
23 Correct 1 ms 200 KB Output is correct
24 Correct 2 ms 200 KB Output is correct
25 Correct 1 ms 200 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 1 ms 200 KB Output is correct
2 Correct 2 ms 200 KB Output is correct
3 Correct 1 ms 200 KB Output is correct
4 Correct 1 ms 200 KB Output is correct
5 Correct 1 ms 200 KB Output is correct
6 Correct 1 ms 288 KB Output is correct
7 Correct 1 ms 200 KB Output is correct
8 Correct 1 ms 284 KB Output is correct
9 Correct 1 ms 200 KB Output is correct
10 Correct 1 ms 200 KB Output is correct
11 Correct 1 ms 200 KB Output is correct
12 Correct 2 ms 200 KB Output is correct
13 Correct 1 ms 200 KB Output is correct
14 Correct 1 ms 200 KB Output is correct
15 Correct 1 ms 200 KB Output is correct
16 Correct 1 ms 200 KB Output is correct
17 Correct 1 ms 280 KB Output is correct
18 Correct 1 ms 272 KB Output is correct
19 Correct 1 ms 200 KB Output is correct
20 Correct 1 ms 200 KB Output is correct
21 Correct 1 ms 200 KB Output is correct
22 Correct 1 ms 200 KB Output is correct
23 Correct 1 ms 200 KB Output is correct
24 Correct 2 ms 200 KB Output is correct
25 Correct 1 ms 200 KB Output is correct
26 Correct 1 ms 200 KB Output is correct
27 Correct 1 ms 200 KB Output is correct
28 Correct 1 ms 284 KB Output is correct
29 Correct 1 ms 200 KB Output is correct
30 Correct 1 ms 200 KB Output is correct
31 Correct 1 ms 276 KB Output is correct
32 Correct 1 ms 200 KB Output is correct
33 Correct 2 ms 284 KB Output is correct
34 Correct 1 ms 200 KB Output is correct
35 Correct 1 ms 200 KB Output is correct
36 Correct 1 ms 200 KB Output is correct
37 Correct 1 ms 200 KB Output is correct
38 Correct 1 ms 200 KB Output is correct
39 Correct 1 ms 200 KB Output is correct
40 Correct 1 ms 200 KB Output is correct
41 Correct 1 ms 200 KB Output is correct
42 Correct 1 ms 200 KB Output is correct
43 Correct 1 ms 200 KB Output is correct
44 Correct 1 ms 200 KB Output is correct
45 Correct 1 ms 288 KB Output is correct
46 Correct 1 ms 200 KB Output is correct
47 Correct 1 ms 272 KB Output is correct
48 Correct 1 ms 200 KB Output is correct
49 Correct 2 ms 200 KB Output is correct
50 Correct 1 ms 276 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 1 ms 200 KB Output is correct
2 Correct 2 ms 200 KB Output is correct
3 Correct 1 ms 200 KB Output is correct
4 Correct 1 ms 200 KB Output is correct
5 Correct 1 ms 200 KB Output is correct
6 Correct 1 ms 288 KB Output is correct
7 Correct 1 ms 200 KB Output is correct
8 Correct 1 ms 284 KB Output is correct
9 Correct 1 ms 200 KB Output is correct
10 Correct 1 ms 200 KB Output is correct
11 Correct 1 ms 200 KB Output is correct
12 Correct 2 ms 200 KB Output is correct
13 Correct 1 ms 200 KB Output is correct
14 Correct 1 ms 200 KB Output is correct
15 Correct 1 ms 200 KB Output is correct
16 Correct 1 ms 200 KB Output is correct
17 Correct 1 ms 280 KB Output is correct
18 Correct 1 ms 272 KB Output is correct
19 Correct 1 ms 200 KB Output is correct
20 Correct 1 ms 200 KB Output is correct
21 Correct 1 ms 200 KB Output is correct
22 Correct 1 ms 200 KB Output is correct
23 Correct 1 ms 200 KB Output is correct
24 Correct 2 ms 200 KB Output is correct
25 Correct 1 ms 200 KB Output is correct
26 Correct 1 ms 200 KB Output is correct
27 Correct 1 ms 200 KB Output is correct
28 Correct 1 ms 200 KB Output is correct
29 Correct 1 ms 200 KB Output is correct
30 Correct 1 ms 200 KB Output is correct
31 Correct 2 ms 200 KB Output is correct
32 Correct 1 ms 288 KB Output is correct
33 Correct 2 ms 200 KB Output is correct
34 Correct 1 ms 288 KB Output is correct
35 Correct 1 ms 200 KB Output is correct
36 Correct 1 ms 200 KB Output is correct
37 Correct 1 ms 200 KB Output is correct
38 Correct 1 ms 200 KB Output is correct
39 Correct 1 ms 200 KB Output is correct
40 Correct 1 ms 280 KB Output is correct
41 Correct 1 ms 200 KB Output is correct
42 Correct 1 ms 200 KB Output is correct
43 Correct 1 ms 200 KB Output is correct
44 Correct 2 ms 200 KB Output is correct
45 Correct 1 ms 200 KB Output is correct
46 Correct 1 ms 200 KB Output is correct
47 Runtime error 1 ms 200 KB Execution killed with signal 13
48 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 1 ms 200 KB Output is correct
2 Correct 2 ms 200 KB Output is correct
3 Correct 1 ms 200 KB Output is correct
4 Correct 1 ms 200 KB Output is correct
5 Correct 1 ms 200 KB Output is correct
6 Correct 1 ms 288 KB Output is correct
7 Correct 1 ms 200 KB Output is correct
8 Correct 1 ms 284 KB Output is correct
9 Correct 1 ms 200 KB Output is correct
10 Correct 1 ms 200 KB Output is correct
11 Correct 1 ms 200 KB Output is correct
12 Correct 2 ms 200 KB Output is correct
13 Correct 1 ms 200 KB Output is correct
14 Correct 1 ms 200 KB Output is correct
15 Correct 1 ms 200 KB Output is correct
16 Correct 1 ms 200 KB Output is correct
17 Correct 1 ms 280 KB Output is correct
18 Correct 1 ms 272 KB Output is correct
19 Correct 1 ms 200 KB Output is correct
20 Correct 1 ms 200 KB Output is correct
21 Correct 1 ms 200 KB Output is correct
22 Correct 1 ms 200 KB Output is correct
23 Correct 1 ms 200 KB Output is correct
24 Correct 2 ms 200 KB Output is correct
25 Correct 1 ms 200 KB Output is correct
26 Correct 1 ms 200 KB Output is correct
27 Correct 1 ms 200 KB Output is correct
28 Correct 1 ms 284 KB Output is correct
29 Correct 1 ms 200 KB Output is correct
30 Correct 1 ms 200 KB Output is correct
31 Correct 1 ms 276 KB Output is correct
32 Correct 1 ms 200 KB Output is correct
33 Correct 2 ms 284 KB Output is correct
34 Correct 1 ms 200 KB Output is correct
35 Correct 1 ms 200 KB Output is correct
36 Correct 1 ms 200 KB Output is correct
37 Correct 1 ms 200 KB Output is correct
38 Correct 1 ms 200 KB Output is correct
39 Correct 1 ms 200 KB Output is correct
40 Correct 1 ms 200 KB Output is correct
41 Correct 1 ms 200 KB Output is correct
42 Correct 1 ms 200 KB Output is correct
43 Correct 1 ms 200 KB Output is correct
44 Correct 1 ms 200 KB Output is correct
45 Correct 1 ms 288 KB Output is correct
46 Correct 1 ms 200 KB Output is correct
47 Correct 1 ms 272 KB Output is correct
48 Correct 1 ms 200 KB Output is correct
49 Correct 2 ms 200 KB Output is correct
50 Correct 1 ms 276 KB Output is correct
51 Correct 1 ms 200 KB Output is correct
52 Correct 1 ms 200 KB Output is correct
53 Correct 1 ms 200 KB Output is correct
54 Correct 1 ms 200 KB Output is correct
55 Correct 1 ms 200 KB Output is correct
56 Correct 2 ms 200 KB Output is correct
57 Correct 1 ms 288 KB Output is correct
58 Correct 2 ms 200 KB Output is correct
59 Correct 1 ms 288 KB Output is correct
60 Correct 1 ms 200 KB Output is correct
61 Correct 1 ms 200 KB Output is correct
62 Correct 1 ms 200 KB Output is correct
63 Correct 1 ms 200 KB Output is correct
64 Correct 1 ms 200 KB Output is correct
65 Correct 1 ms 280 KB Output is correct
66 Correct 1 ms 200 KB Output is correct
67 Correct 1 ms 200 KB Output is correct
68 Correct 1 ms 200 KB Output is correct
69 Correct 2 ms 200 KB Output is correct
70 Correct 1 ms 200 KB Output is correct
71 Correct 1 ms 200 KB Output is correct
72 Runtime error 1 ms 200 KB Execution killed with signal 13
73 Halted 0 ms 0 KB -