题目链接:CodeForces 302A Eugeny and Array
题目和样例2都没没看懂。。
if the elements of array a can be rearranged so as the sum ali + ali + 1 + … + ari = 0 数组可以重新排列QAQ
分析:就是问能否从这n个数中找出 ri-li+1 个数,使和为0。 可以输出1,不可以输出0。因为只有-1和1,所以要使得和为0则必有ri-li+1个1和ri-li+1个0。若ri-li+1为奇数肯定不行,为偶数,且(ri-li+1)/2 <= 1的个数 && <= -1的个数,则可以。
#include<iostream>
#include<cstdio>
#include<cmath>
#include<algorithm>
#include<string>
#include<cstring>
using namespace std;
typedef long long ll;
const int maxn = 200010;
const int INF = 0x3f3f3f3f;
int a[maxn];
int main()
{
int n,m;
scanf("%d%d",&n,&m);
int tmp1=0,tmp2=0; //变量忘初始化为0
for(int i=1;i<=n;i++)
{
scanf("%d",&a[i]);
if(a[i]==1)
tmp1++;
else
tmp2++;
}
int l,r;
while(m--)
{
scanf("%d%d",&l,&r);
int num = r-l+1;
if(num%2!=0)
printf("0\n");
else
{
if(num/2<=tmp1 && num/2<=tmp2)
printf("1\n");
else
printf("0\n");
}
}
return 0;
}