//******************/
//* I<3 C++ */
//* I WANT ANY AC */
//* I LOVE PROGRAM!*/
//*IT'S long longERESTING*/
//* I LOVE PROGRAM!*/
//* IN CONTESTS */
//* GET SCORE */
//* AC CODE */
//* LET'S */
//* GO */
//* Written by: */
//* Duc Minh */
#include <bits/stdc++.h>
#include <iostream>
#include <cmath>
#include <vector>
#include <map>
#include <set>
#include <stack>
#include <algorithm>
#include <string>
#include <queue>
#include <cctype>
#include <cstring>
#include <iomanip>
#include <deque>
// #include <ext/pb_ds/assoc_container.hpp>
// #include <ext/pb_ds/tree_policy.hpp>
using namespace std;
// using namespace __gnu_pbds;
#define file(name) freopen(name".inp", "r", stdin);\
freopen(name".out", "w", stdout);
#define ordered_set tree<ll, null_type,less_equal<ll>, rb_tree_tag,tree_order_statistics_node_update>
#define TIME (1.0 * clock() / CLOCKS_PER_SEC)
#define all(a) a.begin(),a.end()
#define endl "\n"
#define all1(a) a+1,a+n+1
#define unordered_map map
#define Accepted 0
// #define push_back emplace_back
// #define gcd(a,b) __gcd(a,b);
// #define lcm(a,b) (a*b)/gcd(a,b);
const long long INF = (long long)1e18;
const long long MOD = (long long)1e9+7;
const long long MODD = 14062008; /// 998244353
const long long maxN = 2e5+9;
const long long LOG = 30;
///--------------------------------
void solve();
signed main(){
ios_base::sync_with_stdio(false);cin.tie(NULL);cout.tie(NULL);
// file("tbrackets");
long long t;
// cin >> t;
t=1;
while (t--){
solve();
}
cerr << "Time elapsed: " << TIME << "s.\n";
cerr << "ducminh" << "\n";
return Accepted;
}
///--------------------[PROBLEM SOLUTION]--------------------///
long long a[200009], dp[109][109], pre[200009];
long long ans=INF,n,L,R;
void sub1(){
for (long long mask=0; mask<(1<<n); mask++){
long long sum=0,g=0;
for (long long i=0; i<n; i++){
sum+=a[i];
if ((mask>>i)&1){
g|=sum;
sum=0;
}
}
g|=sum;
long long bits=__builtin_popcount(mask) + ((mask & (1 << (n - 1))) == 0);
if (L<=bits && bits<=R) ans=min(ans,g);
}
cout << ans;
exit(0);
}
void sub2(){
long long dp[59][29][509];
memset(dp, false ,sizeof dp);
dp[0][0][0] = true;
const int N=500;
for (long long i=0; i<n; i++){
for (long long k=0; k<=min(i,R-1); k++){
for (long long j=0; j<=N; j++){
if (!dp[i][k][j]) continue;
for (long long t=i+1; t<n; t++){
dp[t][k+1][j|(pre[t-1]-pre[i-1])] |= dp[i][k][j];
}
}
}
}
long long ans = INF;
for (long long j = L ; j <= R ; j++)
for (long long t = 0; t <= N; t++){
if (dp[n-1][j][t]) ans=min(ans,t);
}
cout << ans;
exit(0);
}
void sub3(){
for (long long i=0; i<=n+1; i++){
for (long long j=0; j<=R+1; j++){
dp[i][j]=INF;
}
}
sort(a,a+n);
pre[0]=a[0];
for (int i=1; i<n; i++){
pre[i]=pre[i-1]+a[i];
}
dp[0][0]=0;
// dp[i][j][or]
for (long long i=1; i<=n; i++){
for (long long k=1; k<=R; k++){
for (long long j=0; j<i; j++){
long long sum=pre[i-1]-pre[j-1];
if (j==0) sum=pre[i-1];
// sum=0;
// for (long long ii=j; ii<i; ii++){
// sum+=a[ii];
// }
// cout << sum << ' ' << j << ' ' << i << "\n";
dp[i][k]=min(dp[i][k],dp[j][k-1]|sum);
}
}
}
for (long long i=L; i<=R; i++){
ans=min(ans,dp[n][i]);
// cout << dp[n][i] << "\n";
}
cout << ans;
exit(0);
}
void solve(){
cin >> n >> L >> R;
for (long long i=0; i<n; i++){
cin >> a[i]; if (i==0) pre[i]=a[i]; else pre[i]=pre[i-1]+a[i];
}
// cout << pre[2]-pre[0] << "\n";
if (n<=20) sub1();
else sub3();
sub3();
}
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
1 ms |
2392 KB |
Output is correct |
2 |
Correct |
1 ms |
2392 KB |
Output is correct |
3 |
Correct |
1 ms |
2392 KB |
Output is correct |
4 |
Correct |
1 ms |
2396 KB |
Output is correct |
5 |
Correct |
1 ms |
2396 KB |
Output is correct |
6 |
Correct |
3 ms |
2548 KB |
Output is correct |
7 |
Correct |
8 ms |
2512 KB |
Output is correct |
8 |
Correct |
73 ms |
2496 KB |
Output is correct |
9 |
Correct |
66 ms |
2396 KB |
Output is correct |
10 |
Correct |
67 ms |
2648 KB |
Output is correct |
11 |
Correct |
68 ms |
2396 KB |
Output is correct |
12 |
Correct |
67 ms |
2392 KB |
Output is correct |
13 |
Correct |
69 ms |
2496 KB |
Output is correct |
14 |
Correct |
1 ms |
2396 KB |
Output is correct |
15 |
Correct |
1 ms |
2396 KB |
Output is correct |
16 |
Correct |
1 ms |
2396 KB |
Output is correct |
17 |
Correct |
1 ms |
2396 KB |
Output is correct |
18 |
Correct |
1 ms |
2396 KB |
Output is correct |
19 |
Correct |
3 ms |
2396 KB |
Output is correct |
20 |
Correct |
10 ms |
2396 KB |
Output is correct |
21 |
Correct |
65 ms |
2396 KB |
Output is correct |
22 |
Correct |
67 ms |
2492 KB |
Output is correct |
23 |
Correct |
64 ms |
2396 KB |
Output is correct |
24 |
Correct |
67 ms |
2396 KB |
Output is correct |
25 |
Correct |
64 ms |
2512 KB |
Output is correct |
26 |
Correct |
65 ms |
2396 KB |
Output is correct |
27 |
Correct |
1 ms |
2396 KB |
Output is correct |
28 |
Correct |
1 ms |
2444 KB |
Output is correct |
29 |
Correct |
1 ms |
2396 KB |
Output is correct |
30 |
Correct |
33 ms |
2396 KB |
Output is correct |
31 |
Correct |
64 ms |
2492 KB |
Output is correct |
32 |
Correct |
66 ms |
2496 KB |
Output is correct |
33 |
Correct |
64 ms |
2492 KB |
Output is correct |
34 |
Correct |
66 ms |
2396 KB |
Output is correct |
35 |
Correct |
67 ms |
2552 KB |
Output is correct |
36 |
Correct |
69 ms |
2400 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
1 ms |
2392 KB |
Output is correct |
2 |
Correct |
0 ms |
2396 KB |
Output is correct |
3 |
Correct |
1 ms |
2396 KB |
Output is correct |
4 |
Correct |
1 ms |
2396 KB |
Output is correct |
5 |
Correct |
1 ms |
2396 KB |
Output is correct |
6 |
Correct |
3 ms |
2524 KB |
Output is correct |
7 |
Correct |
9 ms |
2396 KB |
Output is correct |
8 |
Correct |
66 ms |
2396 KB |
Output is correct |
9 |
Correct |
66 ms |
2392 KB |
Output is correct |
10 |
Correct |
66 ms |
2492 KB |
Output is correct |
11 |
Correct |
66 ms |
2496 KB |
Output is correct |
12 |
Correct |
66 ms |
2496 KB |
Output is correct |
13 |
Correct |
71 ms |
2496 KB |
Output is correct |
14 |
Correct |
1 ms |
2396 KB |
Output is correct |
15 |
Correct |
1 ms |
2396 KB |
Output is correct |
16 |
Correct |
1 ms |
2396 KB |
Output is correct |
17 |
Correct |
1 ms |
2396 KB |
Output is correct |
18 |
Correct |
1 ms |
2396 KB |
Output is correct |
19 |
Correct |
2 ms |
2396 KB |
Output is correct |
20 |
Correct |
9 ms |
2392 KB |
Output is correct |
21 |
Correct |
64 ms |
2492 KB |
Output is correct |
22 |
Correct |
64 ms |
2496 KB |
Output is correct |
23 |
Correct |
64 ms |
2396 KB |
Output is correct |
24 |
Correct |
68 ms |
2392 KB |
Output is correct |
25 |
Correct |
64 ms |
2396 KB |
Output is correct |
26 |
Correct |
71 ms |
2504 KB |
Output is correct |
27 |
Correct |
1 ms |
2396 KB |
Output is correct |
28 |
Correct |
1 ms |
2396 KB |
Output is correct |
29 |
Incorrect |
1 ms |
2396 KB |
Output isn't correct |
30 |
Halted |
0 ms |
0 KB |
- |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
1 ms |
2396 KB |
Output is correct |
2 |
Correct |
1 ms |
2396 KB |
Output is correct |
3 |
Correct |
1 ms |
2804 KB |
Output is correct |
4 |
Correct |
1 ms |
2396 KB |
Output is correct |
5 |
Correct |
1 ms |
2396 KB |
Output is correct |
6 |
Correct |
2 ms |
2516 KB |
Output is correct |
7 |
Correct |
9 ms |
2396 KB |
Output is correct |
8 |
Correct |
71 ms |
2496 KB |
Output is correct |
9 |
Correct |
69 ms |
2396 KB |
Output is correct |
10 |
Correct |
66 ms |
2396 KB |
Output is correct |
11 |
Correct |
73 ms |
2392 KB |
Output is correct |
12 |
Correct |
66 ms |
2500 KB |
Output is correct |
13 |
Correct |
68 ms |
2392 KB |
Output is correct |
14 |
Correct |
1 ms |
2396 KB |
Output is correct |
15 |
Correct |
1 ms |
2448 KB |
Output is correct |
16 |
Incorrect |
1 ms |
2396 KB |
Output isn't correct |
17 |
Halted |
0 ms |
0 KB |
- |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
1 ms |
2396 KB |
Output is correct |
2 |
Correct |
1 ms |
2396 KB |
Output is correct |
3 |
Correct |
1 ms |
2392 KB |
Output is correct |
4 |
Correct |
1 ms |
2648 KB |
Output is correct |
5 |
Correct |
1 ms |
2396 KB |
Output is correct |
6 |
Correct |
3 ms |
2396 KB |
Output is correct |
7 |
Correct |
8 ms |
2516 KB |
Output is correct |
8 |
Correct |
74 ms |
2248 KB |
Output is correct |
9 |
Correct |
66 ms |
2500 KB |
Output is correct |
10 |
Correct |
69 ms |
2500 KB |
Output is correct |
11 |
Correct |
74 ms |
2644 KB |
Output is correct |
12 |
Correct |
66 ms |
2496 KB |
Output is correct |
13 |
Correct |
69 ms |
2492 KB |
Output is correct |
14 |
Correct |
1 ms |
2396 KB |
Output is correct |
15 |
Correct |
1 ms |
2396 KB |
Output is correct |
16 |
Correct |
1 ms |
2392 KB |
Output is correct |
17 |
Correct |
1 ms |
2396 KB |
Output is correct |
18 |
Correct |
1 ms |
2396 KB |
Output is correct |
19 |
Correct |
3 ms |
2396 KB |
Output is correct |
20 |
Correct |
9 ms |
2396 KB |
Output is correct |
21 |
Correct |
65 ms |
2392 KB |
Output is correct |
22 |
Correct |
64 ms |
2396 KB |
Output is correct |
23 |
Correct |
64 ms |
2396 KB |
Output is correct |
24 |
Correct |
67 ms |
2396 KB |
Output is correct |
25 |
Correct |
64 ms |
2392 KB |
Output is correct |
26 |
Correct |
66 ms |
2396 KB |
Output is correct |
27 |
Correct |
1 ms |
2392 KB |
Output is correct |
28 |
Correct |
1 ms |
2408 KB |
Output is correct |
29 |
Correct |
1 ms |
2396 KB |
Output is correct |
30 |
Correct |
32 ms |
2524 KB |
Output is correct |
31 |
Correct |
66 ms |
2496 KB |
Output is correct |
32 |
Correct |
66 ms |
2396 KB |
Output is correct |
33 |
Correct |
64 ms |
2492 KB |
Output is correct |
34 |
Correct |
66 ms |
2396 KB |
Output is correct |
35 |
Correct |
66 ms |
2396 KB |
Output is correct |
36 |
Correct |
66 ms |
2396 KB |
Output is correct |
37 |
Correct |
1 ms |
2392 KB |
Output is correct |
38 |
Correct |
1 ms |
2396 KB |
Output is correct |
39 |
Incorrect |
1 ms |
2396 KB |
Output isn't correct |
40 |
Halted |
0 ms |
0 KB |
- |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
1 ms |
2396 KB |
Output is correct |
2 |
Correct |
1 ms |
2396 KB |
Output is correct |
3 |
Correct |
1 ms |
2396 KB |
Output is correct |
4 |
Correct |
1 ms |
2396 KB |
Output is correct |
5 |
Correct |
1 ms |
2516 KB |
Output is correct |
6 |
Correct |
2 ms |
2396 KB |
Output is correct |
7 |
Correct |
10 ms |
2520 KB |
Output is correct |
8 |
Correct |
67 ms |
2496 KB |
Output is correct |
9 |
Correct |
69 ms |
2492 KB |
Output is correct |
10 |
Correct |
70 ms |
2652 KB |
Output is correct |
11 |
Correct |
65 ms |
2396 KB |
Output is correct |
12 |
Correct |
69 ms |
2496 KB |
Output is correct |
13 |
Correct |
67 ms |
2392 KB |
Output is correct |
14 |
Correct |
1 ms |
2396 KB |
Output is correct |
15 |
Correct |
1 ms |
2396 KB |
Output is correct |
16 |
Correct |
1 ms |
2516 KB |
Output is correct |
17 |
Correct |
38 ms |
2392 KB |
Output is correct |
18 |
Correct |
63 ms |
2392 KB |
Output is correct |
19 |
Correct |
66 ms |
2396 KB |
Output is correct |
20 |
Correct |
64 ms |
2396 KB |
Output is correct |
21 |
Correct |
66 ms |
2392 KB |
Output is correct |
22 |
Correct |
67 ms |
2396 KB |
Output is correct |
23 |
Correct |
66 ms |
2392 KB |
Output is correct |
24 |
Correct |
1 ms |
2396 KB |
Output is correct |
25 |
Correct |
1 ms |
2396 KB |
Output is correct |
26 |
Incorrect |
3 ms |
2396 KB |
Output isn't correct |
27 |
Halted |
0 ms |
0 KB |
- |