题解
2025-04-07 12:19:34
发布于:江苏
3阅读
0回复
0点赞
我们需要判断给定的数组是否可以通过重新排列,使得特定区间内的元素之和为零。注意数组中的元素只能是1或-1。重新排列数组意味着可以任意调整元素的位置。区间和为零的条件是该区间内1和-1的数量相等。因此,区间长度必须是偶数,且整个数组中1和-1的总数足够覆盖该区间
#include <bits/stdc++.h>
using namespace std;
int main() {
ios::sync_with_stdio(false);
cin.tie(nullptr);
int n,m;
cin>>n>>m;
vector<int> A(n);
int count1=0, count_neg1 = 0;
for(int i=0; i<n; i++) {
cin>>A[i];
if(A[i]==1) {
count1++;
}else{
count_neg1++;
}
}
while(m--) {
int l, r;
cin>>l>>r;
int len=r-l+1;
if(len%2!= 0) {
cout<<"sad\n";
}else {
int half=len / 2;
if(count1>=half && count_neg1>=half) {
cout << "happy\n";
}else{
cout << "sad\n";
}
}
}
return 0;
}
这里空空如也
有帮助,赞一个