任何情况下都有解 不可能输出-1
将所有点排序后交替用红蓝染色 则在任意区间[li,ri]内红点个数R和蓝点个数B均满足|R-B|<=1
#include<bits/stdc++.h>
using namespace std;
struct points{
int c;
int a;
}p[120];
bool cmp1(points a,points b)
{
return a.c<b.c;
}
int f[120];
int main()
{
int n,m,l,r;
scanf("%d%d",&n,&m);
for(int i=1;i<=n;i++)
{
scanf("%d",&p[i].c);
p[i].a=i;
}
for(int i=1;i<=m;i++)
scanf("%d%d",&l,&r);
sort(p+1,p+n+1,cmp1);
for(int i=1;i<=n;i++)
{
if(i%2==0)
f[p[i].a]=0;
else
f[p[i].a]=1;
}
for(int i=1;i<=n;i++)
{
if(i!=1)
printf(" ");
printf("%d",f[i]);
}
printf("\n");
return 0;
}