Codeforces Round #704 (Div. 2) D. Genius's Gambit

Aimee

鉴于本人代码一开始写得非常不美观

所以说一堆特判

边界是\(a+b-2<=\)\(K!=0\)时不存在

然后一堆特殊情况

#include<iostream>
#include<cstdio>
#include<cstring>
int a,b,k,z;
using namespace std;
string s,ss;
int main(){
	scanf("%d%d%d",&a,&b,&k);
	b--;
	s+='1';
	ss+='1';
	if(a+b-1<=k){
		cout<<"No";
		return 0;
	}
	else{
		if(a==0&&k==0){
			for(int i=1;i<=b;++i){
				ss+='1';
				s+='1';
			}
				cout<<"Yes"<<endl;
			cout<<s<<endl<<ss; 
			return 0;
		} 
		if(a<=0&&k>0){
			cout<<"No";
			return 0; 
		}
		if(b==0&&k!=0){
			cout<<"No";
			return 0;
		}
		if(k==0){
				for(int i=1;i<=b;++i){
				ss+='1';
				s+='1';
			}	
			for(int i=1;i<=a;++i){
				ss+='0';
				s+='0';
			}
				cout<<"Yes"<<endl;
			cout<<s<<endl<<ss; 
			return 0;
		}
		ss+='0';
		s+='1';
		k--;
		b--;
		a--;
		while(k>=1&&a>=1){
			k--;
			s+='0';
			ss+='0';
			a--; 
		}
		while(k>=1&&b>=1){
			k--;
			s+='1';
			ss+='1';
			b--; 
		}
		ss+='1';
		s+='0';
			for(int i=1;i<=b;++i){
			ss+='1';
			s+='1';
		}
		while(a>=1){
			ss+='0';
			s+='0';
			a--;
		}
	}
		cout<<"Yes"<<endl;
	cout<<s<<endl<<ss;
	return 0;
}
posted @ 2021-02-24 09:14  Simex  阅读(48)  评论(0编辑  收藏  举报