以下のプログラムは、123210122 のようなほとんどの入力に対して完全に実行されます。
しかし、122211122222111222111111112221111 として入力すると、std::bad_alloc 例外がスローされます。
質問で指定されているように、クラス構造または関数シグネチャを変更できません。だから、このコードを見てください:
#include<iostream>
#include<vector>
#include<string>
using namespace std;
class BinaryCode
{
public:
vector<string> decode(string q)
{
string p;
int i;
vector<string> response;
bool flagnone=false;
p[0]='0';
p[1]=((q[0]-'0')-0-(p[0]-'0'))+'0';
if(p[1]!='0' && p[1]!='1')
response.push_back("NONE");
else
{
for(i=2;i<q.length();++i)
{
p[i]=((q[i-1]-'0')-(p[i-2]-'0')-(p[i-1]-'0'))+'0';
if(p[i]!='0' && p[i]!='1')
{
response.push_back("NONE");
flagnone=true;
}
}
if(!flagnone)
{
response.push_back(p.data());
}
}
flagnone=false;
p[0]='1';
p[1]=((q[0]-'0')-0-(p[0]-'0'))+'0';
if(p[1]!='0' && p[1]!='1')
response.push_back("NONE");
else
{
for(i=2;i<q.length();++i)
{
p[i]=((q[i-1]-'0')-(p[i-2]-'0')-(p[i-1]-'0'))+'0';
if(p[i]!='0' && p[i]!='1')
{
response.push_back("NONE");
flagnone=true;
}
}
if(!flagnone)
{
response.push_back(p.data());
}
}
return response;
}
}b;
int main()
{
string s;
cin>>s;
vector<string>ans = b.decode(s);
cout<<ans[0]<<" "<<ans[1];
return 0;
}