#include <bits/stdc++.h>
#define fi first
#define se second
#define lc id<<1
#define rc id<<1^1
const long long inf = 1e18;
using namespace std;
typedef pair<int, int> pii;
int n, l, r;
int a[2008], p[2008][38], orr[2008][2008];
long long ans = inf, f[2008];
int main(){
ios_base::sync_with_stdio(0);
cin.tie(0); cout.tie(0);
cin >> n >> l >> r;
fill(p[0], p[0] + 30, 0);
for (int i = 1; i <= n; i++){
cin >> a[i];
for (int j = i; j <= n; j++)
orr[i][j] = orr[i][j - 1] | a[j];
for (int j = 0; j < 30; j++)
p[i][j] = ((a[i] >> j) & 1) ? i : p[i - 1][j];
a[i] |= a[i - 1];
f[i] = a[i];
}
f[0] = 0;
if (l <= 1 && 1 <= r)
ans = min(ans, f[n]);
for (int j = 2; j <= r; j++){
for (int i = n; i >= 0; i--)
if (i < j)
f[i] = inf;
else{
f[i] = inf;
for (int bit = 0; bit < 30; bit++)
if (p[i][bit] > 0)
f[i] = min(f[i], f[p[i][bit] - 1] + orr[p[i][bit]][i]);
}
if (j >= l)
ans = min(ans, f[n]);
}
cout << ans;
return 0;
}
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Incorrect |
1 ms |
340 KB |
Output isn't correct |
2 |
Halted |
0 ms |
0 KB |
- |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Incorrect |
1 ms |
340 KB |
Output isn't correct |
2 |
Halted |
0 ms |
0 KB |
- |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Incorrect |
1 ms |
340 KB |
Output isn't correct |
2 |
Halted |
0 ms |
0 KB |
- |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Incorrect |
1 ms |
340 KB |
Output isn't correct |
2 |
Halted |
0 ms |
0 KB |
- |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Incorrect |
0 ms |
340 KB |
Output isn't correct |
2 |
Halted |
0 ms |
0 KB |
- |