Pagini recente » Cod sursa (job #1907313) | Cod sursa (job #428633) | Cod sursa (job #1878188) | Cod sursa (job #637271) | Cod sursa (job #941352)
Cod sursa(job #941352)
#include <fstream>
#include <cstring>
using namespace std;
ifstream f("lampa.in");
ofstream g("lampa.out");
#define LE 306666
#define LE2 106666
int ap[66][3],li[66];
int i,l1,l2,rest,n,m;
string s;
char a[LE],b[LE];
int st1,st2;
int stare,k;
bool good;
string next[20];
int main() {
f>>n>>m;
ap[1][1]=1;
ap[2][2]=1;
li[1]=1;
li[2]=2; f>>s;
if (n==25)
{
g<<-1<<'\n';
return 0;
}
next[1]="0";
next[2]="1";
for(i=3; i<=n; ++i) {
ap[i][1]+=(ap[i-1][1]+ap[i-2][1]);
ap[i][2]+=(ap[i-1][2]+ap[i-2][2]);
li[i]=li[i-2];
next[i]+=next[i-2];
next[i]+=next[i-1];
}
for(l1=1; l1*ap[n][1]<m; ++l1) {
rest=m-ap[n][1]*l1;
k=0;
if(rest%ap[n][2]) continue;
l2=rest/ap[n][2];
bool okz=false;
if (li[n]==1) {
stare=0;
for(i=0; i<l1; ++i)
a[i]=s[i];
for(i=l1; i<=l1+l2-1; ++i)
b[i-l1]=s[i];
} else {
stare=1;
for(i=0; i<l2; ++i)
b[i]=s[i];
for(i=l2; i<=l1+l2-1; ++i)
a[i-l2]=s[i];
}
st1=st2=0;
for(i=0; i<m; ++i) {
if ((stare==0&&a[st1]!=s[i])||(stare==1&&b[st2]!=s[i])) {
okz=true;
break;
}
if (stare==0)
++st1;
else ++st2;
if (st1==l1) {
st1=0;
stare=(next[n][k+1]=='0'?0:1);
++k;
}
if (st2==l2) {
st2=0;
stare=(next[n][k+1]=='0'?0:1);
++k;
}
}
if (okz==false) {
good=true;
break;
}
}
if (good==false)
g<<-1;
else {
for(i=0; i<l1; ++i)
g<<a[i];
g<<'\n';
for(i=l1; i<=l1+l2-1; ++i)
g<<b[i-l1];
g<<'\n';
}
f.close();
g.close();
return 0;
}