

Hãy luôn nhớ cảm ơn và vote 5*
nếu câu trả lời hữu ích nhé!
#include <bits/stdc++.h>
using namespace std;
int n, k;
vector<int> a;
int count_one(int x) {
return bitset<64>(x).count();
}
int main() {
cin >> n >> k;
a.resize(n+5);
for (int i = 1; i <= n; i++) cin >> a[i];
int sum = 0;
int len = n + 1;
int l = 1, r = 1;
while (r <= n) {
while (sum <= k && r <= n)
sum += count_one(a[r++]);
while (sum > k && l <= n) {
if (r - l < len) len = r - l;
sum -= count_one(a[l++]);
}
}
if (len == n+1) {
cout << -1 << "\n";
} else {
cout << len << "\n";
}
return 0;
}
Hãy giúp mọi người biết câu trả lời này thế nào?
![]()
Bảng tin
3
200
0
Hehe e cảm ơn ạ, mai e test thử 💚
132
3555
95
sai ở đâu báo tui nha
3
200
0
Trong while đó đk của r để kết thúc vòng while a chưa có pk a, e bị lặp vô hạn. E gán r++ mà ra đáp án khác test 🥲
132
3555
95
r <= n đó
132
3555
95
khi r > n thì kết thúc vòng lặp