1400*C. Team(模拟&构造)

Problem - 401C - Codeforces

1400*C. Team(模拟&构造)_第1张图片

 解析:

        因为0不能相邻,所以0之间最少 n-1 个位置,最多 n+1 个位置,如果 m

        并且1最多连续两个,所以 m>2*n+2 同样不符题意。

        其余情况构造即可

#include
using namespace std;
int n,m;
signed main(){
	scanf("%d%d",&n,&m);
	if(m2*n+2) puts("-1");
	else{
		if(m==n){
			for(int i=1;i<=n;i++) printf("01");
		}
		else if(m==n-1){
			for(int i=1;i<=n-1;i++) printf("01");
			printf("0");
		}
		else{
			int a=m-n-1,b=n+1-a;
			for(int i=1;i<=n;i++){
				if(a>0) printf("11"),a--;
				else printf("1"),b--;
				printf("0");
			}
			if(a>0) printf("11"),a--;
			else printf("1"),b--;
		}
	}
	return 0;
}

你可能感兴趣的:(codeforces,c语言,算法,c++,开发语言,构造,模拟)