您的位置:首页 > 其它

cf#324 Div.2 Problem C Marina and Vasya

2015-10-07 17:19 399 查看
#include <iostream>
#include <cstdio>
using namespace std;
int n,t,n1,n2,t1,t2,t3,t4;
string s1,s2;
int main()
{
scanf("%d%d",&n,&t);
cin>>s1>>s2;
for(int i=0;i<n;i++)
{
if(s1[i]==s2[i])
n1++;
}
n2=n-n1;
if(n2&1)
{
if(t<=n2/2)
s1="-1";
else if(t>=(n2/2+1)&&t<=(n2/2+n1+1))
{
t1=1;t2=n2/2;t3=t-n2/2-1;
for(int i=0;i<n;i++)
{
if(s1[i]!=s2[i]&&t1>0)
{
for(char c='a';;c++)
{
if(s1[i]!=c&&s2[i]!=c)
{
s1[i]=c;
t1--;
break;
}
}
}
else if(s1[i]!=s2[i]&&t2>0)
{
s1[i]=s2[i];
t2--;
}
else if(s1[i]==s2[i]&&t3>0)
{
for(char c='a';;c++)
{
if(s1[i]!=c&&s2[i]!=c)
{
s1[i]=c;
t3--;
break;
}
}
}
}
}
else if(t>=(n2/2+n1+2)&&t<n2)
s1="-1";
else if(t>=n2)
{
t1=n2;t2=t-t1;
for(int i=0;i<n;i++)
{
if(s1[i]!=s2[i]&&t1>0)
{
for(char c='a';;c++)
{
if(s1[i]!=c&&s2[i]!=c)
{
s1[i]=c;
t1--;
break;
}
}
}
else if(s1[i]==s2[i]&&t2>0)
{
for(char c='a';;c++)
{
if(s1[i]!=c)
{
s1[i]=c;
t2--;
break;
}
}
}
}
}
}
else if(!(n2&1))
{
if(t<n2/2)
s1="-1";
else if(t>=n2/2&&t<=(n2/2+n1))
{
t1=n2/2;t2=t-t1;
for(int i=0;i<n;i++)
{
if(s1[i]!=s2[i]&&t1>0)
{
s1[i]=s2[i];
t1--;
}
else if(s1[i]==s2[i]&&t2>0)
{
for(char c='a';;c++)
{
if(s1[i]!=c)
{
s1[i]=c;
t2--;
break;
}
}
}
}
}
else if(t>=(n2/2+n1+1)&&t<n2)
{
t1=n2-t;t2=t-t1;
for(int i=0;i<n;i++)
{
if(s1[i]!=s2[i]&&t1>0)
{
s1[i]=s2[i];
t1--;
}
else if(s1[i]!=s2[i]&&t2>0)
{
for(char c='a';;c++)
{
if(s1[i]!=c&&s2[i]!=c)
{
s1[i]=c;
t2--;
break;
}
}
}
}
}
else if(t>=n2)
{
t1=n2;t2=t-t1;
for(int i=0;i<n;i++)
{
if(s1[i]!=s2[i]&&t1>0)
{
for(char c='a';;c++)
{
if(s1[i]!=c&&s2[i]!=c)
{
s1[i]=c;
t1--;
break;
}
}
}
else if(s1[i]==s2[i]&&t2>0)
{
for(char c='a';;c++)
{
if(s1[i]!=c)
{
s1[i]=c;
t2--;
break;
}
}
}

}
}
}
cout<<s1<<"\n";
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  构造