Submission #406834

# Submission time Handle Problem Language Result Execution time Memory
406834 2021-05-18T05:54:26 Z Ruxandra985 A Difficult(y) Choice (BOI21_books) C++14
100 / 100
3 ms 1156 KB
#include<bits/stdc++.h>
#include "books.h"
using namespace std;

long long skim(int pos);
void answer(vector<int> v);
void impossible();

long long v[100010];
int w[100010];

void solve(int n, int k, long long a, int s) {
    int i , st , dr , mid , elem;
    long long sum;
    vector <int> ans;
    sum = 0;
    for (i = 1 ; i <= n ; i++){
        v[i] = -1;
        if (i <= k){
            v[i] = skim(i);
            sum += v[i];
        }
    }

    if (sum > 2 * a){
        impossible();
        return;
    }
    else if (sum >= a && sum <= 2 * a){
        for (i = 1 ; i <= k ; i++)
            ans.push_back(i);
        answer(ans);
        return;
    }

    /// sum < a

    st = k + 1;
    dr = n;
    while (st <= dr){
        mid = (st + dr)/2;
        v[mid] = skim(mid);
        if (v[mid] < a)
            st = mid + 1;
        else dr = mid - 1;
    }

    if (st != n + 1 && sum - v[k] + v[st] <= 2 * a){
        for (i = 1 ; i < k ; i++)
            ans.push_back(i);
        ans.push_back(st);
        answer(ans);
        return;
    }

    /// trb sa iei elemente doar intre 1 si st - 1, toate < a

    n = st - 1;
    elem = 0;
    for (i = 1 ; i <= k ; i++)
        w[++elem] = i;

    for (i = max(k , n - k + 1) ; i <= n ; i++)
        w[++elem] = i;

    st = 1;
    dr = k;
    while ((a > sum || sum > 2 * a) && dr < elem){
        sum -= v[w[st]];
        st++;
        dr++;
        if (v[w[dr]] == -1)
            v[w[dr]] = skim(w[dr]);
        sum += v[w[dr]];

        if (a <= sum && sum <= 2 * a){

            for (i = st ; i <= dr ; i++)
                ans.push_back(w[i]);
            answer(ans);
            return;

        }

    }


    impossible();


}
# 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 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 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
9 Correct 2 ms 456 KB Output is correct
10 Correct 1 ms 456 KB Output is correct
11 Correct 2 ms 432 KB Output is correct
12 Correct 2 ms 432 KB Output is correct
13 Correct 1 ms 456 KB Output is correct
14 Correct 1 ms 456 KB Output is correct
15 Correct 1 ms 456 KB Output is correct
16 Correct 3 ms 428 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 2 ms 936 KB Output is correct
2 Correct 2 ms 1056 KB Output is correct
3 Correct 2 ms 1060 KB Output is correct
4 Correct 2 ms 960 KB Output is correct
5 Correct 2 ms 960 KB Output is correct
6 Correct 2 ms 1072 KB Output is correct
7 Correct 1 ms 1068 KB Output is correct
8 Correct 2 ms 1052 KB Output is correct
9 Correct 2 ms 1072 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 2 ms 936 KB Output is correct
2 Correct 2 ms 1056 KB Output is correct
3 Correct 2 ms 1060 KB Output is correct
4 Correct 2 ms 960 KB Output is correct
5 Correct 2 ms 960 KB Output is correct
6 Correct 2 ms 1072 KB Output is correct
7 Correct 1 ms 1068 KB Output is correct
8 Correct 2 ms 1052 KB Output is correct
9 Correct 2 ms 1072 KB Output is correct
10 Correct 2 ms 932 KB Output is correct
11 Correct 2 ms 936 KB Output is correct
12 Correct 2 ms 1048 KB Output is correct
13 Correct 2 ms 960 KB Output is correct
14 Correct 2 ms 940 KB Output is correct
15 Correct 2 ms 936 KB Output is correct
16 Correct 2 ms 936 KB Output is correct
17 Correct 2 ms 936 KB Output is correct
18 Correct 2 ms 936 KB Output is correct
19 Correct 2 ms 1052 KB Output is correct
20 Correct 2 ms 936 KB Output is correct
21 Correct 2 ms 1068 KB Output is correct
22 Correct 2 ms 960 KB Output is correct
23 Correct 2 ms 968 KB Output is correct
24 Correct 2 ms 936 KB Output is correct
25 Correct 3 ms 1072 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 2 ms 936 KB Output is correct
2 Correct 2 ms 1056 KB Output is correct
3 Correct 2 ms 1060 KB Output is correct
4 Correct 2 ms 960 KB Output is correct
5 Correct 2 ms 960 KB Output is correct
6 Correct 2 ms 1072 KB Output is correct
7 Correct 1 ms 1068 KB Output is correct
8 Correct 2 ms 1052 KB Output is correct
9 Correct 2 ms 1072 KB Output is correct
10 Correct 2 ms 932 KB Output is correct
11 Correct 2 ms 936 KB Output is correct
12 Correct 2 ms 1048 KB Output is correct
13 Correct 2 ms 960 KB Output is correct
14 Correct 2 ms 940 KB Output is correct
15 Correct 2 ms 936 KB Output is correct
16 Correct 2 ms 936 KB Output is correct
17 Correct 2 ms 936 KB Output is correct
18 Correct 2 ms 936 KB Output is correct
19 Correct 2 ms 1052 KB Output is correct
20 Correct 2 ms 936 KB Output is correct
21 Correct 2 ms 1068 KB Output is correct
22 Correct 2 ms 960 KB Output is correct
23 Correct 2 ms 968 KB Output is correct
24 Correct 2 ms 936 KB Output is correct
25 Correct 3 ms 1072 KB Output is correct
26 Correct 2 ms 1084 KB Output is correct
27 Correct 2 ms 1068 KB Output is correct
28 Correct 2 ms 1088 KB Output is correct
29 Correct 2 ms 1048 KB Output is correct
30 Correct 2 ms 1052 KB Output is correct
31 Correct 1 ms 936 KB Output is correct
32 Correct 2 ms 1072 KB Output is correct
33 Correct 2 ms 960 KB Output is correct
34 Correct 2 ms 936 KB Output is correct
35 Correct 2 ms 936 KB Output is correct
36 Correct 2 ms 936 KB Output is correct
37 Correct 2 ms 1052 KB Output is correct
38 Correct 2 ms 964 KB Output is correct
39 Correct 2 ms 968 KB Output is correct
40 Correct 2 ms 968 KB Output is correct
41 Correct 2 ms 968 KB Output is correct
42 Correct 2 ms 1096 KB Output is correct
43 Correct 2 ms 936 KB Output is correct
44 Correct 2 ms 932 KB Output is correct
45 Correct 2 ms 1052 KB Output is correct
46 Correct 3 ms 960 KB Output is correct
47 Correct 2 ms 968 KB Output is correct
48 Correct 2 ms 948 KB Output is correct
49 Correct 2 ms 1072 KB Output is correct
50 Correct 2 ms 1072 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 2 ms 936 KB Output is correct
2 Correct 2 ms 1056 KB Output is correct
3 Correct 2 ms 1060 KB Output is correct
4 Correct 2 ms 960 KB Output is correct
5 Correct 2 ms 960 KB Output is correct
6 Correct 2 ms 1072 KB Output is correct
7 Correct 1 ms 1068 KB Output is correct
8 Correct 2 ms 1052 KB Output is correct
9 Correct 2 ms 1072 KB Output is correct
10 Correct 2 ms 932 KB Output is correct
11 Correct 2 ms 936 KB Output is correct
12 Correct 2 ms 1048 KB Output is correct
13 Correct 2 ms 960 KB Output is correct
14 Correct 2 ms 940 KB Output is correct
15 Correct 2 ms 936 KB Output is correct
16 Correct 2 ms 936 KB Output is correct
17 Correct 2 ms 936 KB Output is correct
18 Correct 2 ms 936 KB Output is correct
19 Correct 2 ms 1052 KB Output is correct
20 Correct 2 ms 936 KB Output is correct
21 Correct 2 ms 1068 KB Output is correct
22 Correct 2 ms 960 KB Output is correct
23 Correct 2 ms 968 KB Output is correct
24 Correct 2 ms 936 KB Output is correct
25 Correct 3 ms 1072 KB Output is correct
26 Correct 2 ms 1052 KB Output is correct
27 Correct 2 ms 1052 KB Output is correct
28 Correct 2 ms 940 KB Output is correct
29 Correct 2 ms 960 KB Output is correct
30 Correct 2 ms 960 KB Output is correct
31 Correct 1 ms 1064 KB Output is correct
32 Correct 1 ms 1064 KB Output is correct
33 Correct 2 ms 968 KB Output is correct
34 Correct 2 ms 1068 KB Output is correct
35 Correct 2 ms 932 KB Output is correct
36 Correct 2 ms 960 KB Output is correct
37 Correct 2 ms 1068 KB Output is correct
38 Correct 2 ms 960 KB Output is correct
39 Correct 2 ms 1072 KB Output is correct
40 Correct 3 ms 1088 KB Output is correct
41 Correct 2 ms 968 KB Output is correct
42 Correct 2 ms 960 KB Output is correct
43 Correct 2 ms 1056 KB Output is correct
44 Correct 2 ms 1068 KB Output is correct
45 Correct 2 ms 960 KB Output is correct
46 Correct 2 ms 960 KB Output is correct
47 Correct 3 ms 940 KB Output is correct
48 Correct 2 ms 1072 KB Output is correct
49 Correct 2 ms 960 KB Output is correct
50 Correct 2 ms 1064 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 2 ms 936 KB Output is correct
2 Correct 2 ms 1056 KB Output is correct
3 Correct 2 ms 1060 KB Output is correct
4 Correct 2 ms 960 KB Output is correct
5 Correct 2 ms 960 KB Output is correct
6 Correct 2 ms 1072 KB Output is correct
7 Correct 1 ms 1068 KB Output is correct
8 Correct 2 ms 1052 KB Output is correct
9 Correct 2 ms 1072 KB Output is correct
10 Correct 2 ms 932 KB Output is correct
11 Correct 2 ms 936 KB Output is correct
12 Correct 2 ms 1048 KB Output is correct
13 Correct 2 ms 960 KB Output is correct
14 Correct 2 ms 940 KB Output is correct
15 Correct 2 ms 936 KB Output is correct
16 Correct 2 ms 936 KB Output is correct
17 Correct 2 ms 936 KB Output is correct
18 Correct 2 ms 936 KB Output is correct
19 Correct 2 ms 1052 KB Output is correct
20 Correct 2 ms 936 KB Output is correct
21 Correct 2 ms 1068 KB Output is correct
22 Correct 2 ms 960 KB Output is correct
23 Correct 2 ms 968 KB Output is correct
24 Correct 2 ms 936 KB Output is correct
25 Correct 3 ms 1072 KB Output is correct
26 Correct 2 ms 1084 KB Output is correct
27 Correct 2 ms 1068 KB Output is correct
28 Correct 2 ms 1088 KB Output is correct
29 Correct 2 ms 1048 KB Output is correct
30 Correct 2 ms 1052 KB Output is correct
31 Correct 1 ms 936 KB Output is correct
32 Correct 2 ms 1072 KB Output is correct
33 Correct 2 ms 960 KB Output is correct
34 Correct 2 ms 936 KB Output is correct
35 Correct 2 ms 936 KB Output is correct
36 Correct 2 ms 936 KB Output is correct
37 Correct 2 ms 1052 KB Output is correct
38 Correct 2 ms 964 KB Output is correct
39 Correct 2 ms 968 KB Output is correct
40 Correct 2 ms 968 KB Output is correct
41 Correct 2 ms 968 KB Output is correct
42 Correct 2 ms 1096 KB Output is correct
43 Correct 2 ms 936 KB Output is correct
44 Correct 2 ms 932 KB Output is correct
45 Correct 2 ms 1052 KB Output is correct
46 Correct 3 ms 960 KB Output is correct
47 Correct 2 ms 968 KB Output is correct
48 Correct 2 ms 948 KB Output is correct
49 Correct 2 ms 1072 KB Output is correct
50 Correct 2 ms 1072 KB Output is correct
51 Correct 2 ms 1052 KB Output is correct
52 Correct 2 ms 1052 KB Output is correct
53 Correct 2 ms 940 KB Output is correct
54 Correct 2 ms 960 KB Output is correct
55 Correct 2 ms 960 KB Output is correct
56 Correct 1 ms 1064 KB Output is correct
57 Correct 1 ms 1064 KB Output is correct
58 Correct 2 ms 968 KB Output is correct
59 Correct 2 ms 1068 KB Output is correct
60 Correct 2 ms 932 KB Output is correct
61 Correct 2 ms 960 KB Output is correct
62 Correct 2 ms 1068 KB Output is correct
63 Correct 2 ms 960 KB Output is correct
64 Correct 2 ms 1072 KB Output is correct
65 Correct 3 ms 1088 KB Output is correct
66 Correct 2 ms 968 KB Output is correct
67 Correct 2 ms 960 KB Output is correct
68 Correct 2 ms 1056 KB Output is correct
69 Correct 2 ms 1068 KB Output is correct
70 Correct 2 ms 960 KB Output is correct
71 Correct 2 ms 960 KB Output is correct
72 Correct 3 ms 940 KB Output is correct
73 Correct 2 ms 1072 KB Output is correct
74 Correct 2 ms 960 KB Output is correct
75 Correct 2 ms 1064 KB Output is correct
76 Correct 1 ms 200 KB Output is correct
77 Correct 1 ms 200 KB Output is correct
78 Correct 1 ms 200 KB Output is correct
79 Correct 2 ms 200 KB Output is correct
80 Correct 1 ms 200 KB Output is correct
81 Correct 1 ms 200 KB Output is correct
82 Correct 1 ms 200 KB Output is correct
83 Correct 1 ms 200 KB Output is correct
84 Correct 3 ms 432 KB Output is correct
85 Correct 1 ms 428 KB Output is correct
86 Correct 1 ms 456 KB Output is correct
87 Correct 1 ms 456 KB Output is correct
88 Correct 1 ms 376 KB Output is correct
89 Correct 1 ms 456 KB Output is correct
90 Correct 2 ms 436 KB Output is correct
91 Correct 1 ms 456 KB Output is correct
92 Correct 2 ms 1156 KB Output is correct
93 Correct 2 ms 1048 KB Output is correct
94 Correct 2 ms 936 KB Output is correct
95 Correct 2 ms 940 KB Output is correct
96 Correct 2 ms 960 KB Output is correct
97 Correct 2 ms 960 KB Output is correct
98 Correct 2 ms 928 KB Output is correct
99 Correct 2 ms 1048 KB Output is correct
100 Correct 2 ms 1064 KB Output is correct
101 Correct 2 ms 1072 KB Output is correct
102 Correct 2 ms 932 KB Output is correct
103 Correct 2 ms 1072 KB Output is correct
104 Correct 2 ms 936 KB Output is correct
105 Correct 2 ms 968 KB Output is correct
106 Correct 2 ms 968 KB Output is correct
107 Correct 2 ms 1068 KB Output is correct
108 Correct 2 ms 968 KB Output is correct
109 Correct 2 ms 1076 KB Output is correct
110 Correct 2 ms 940 KB Output is correct
111 Correct 2 ms 1052 KB Output is correct
112 Correct 2 ms 940 KB Output is correct
113 Correct 2 ms 1064 KB Output is correct
114 Correct 2 ms 960 KB Output is correct
115 Correct 2 ms 1088 KB Output is correct
116 Correct 2 ms 1072 KB Output is correct
117 Correct 2 ms 960 KB Output is correct
118 Correct 2 ms 932 KB Output is correct
119 Correct 2 ms 968 KB Output is correct
120 Correct 2 ms 1072 KB Output is correct
121 Correct 2 ms 928 KB Output is correct
122 Correct 2 ms 960 KB Output is correct
123 Correct 2 ms 968 KB Output is correct
124 Correct 2 ms 968 KB Output is correct
125 Correct 2 ms 1096 KB Output is correct
126 Correct 2 ms 1072 KB Output is correct
127 Correct 2 ms 1048 KB Output is correct
128 Correct 2 ms 936 KB Output is correct
129 Correct 2 ms 940 KB Output is correct
130 Correct 2 ms 968 KB Output is correct
131 Correct 2 ms 932 KB Output is correct
132 Correct 2 ms 1076 KB Output is correct
133 Correct 2 ms 932 KB Output is correct
134 Correct 2 ms 1072 KB Output is correct
135 Correct 2 ms 1072 KB Output is correct