Cod sursa(job #1965331)

Utilizator 3DwArDPauliuc Edward 3DwArD Data 14 aprilie 2017 12:08:53
Problema Lampa Scor 10
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.31 kb
#include <bits/stdc++.h>
using namespace std;
ifstream f("lampa.in");
ofstream g("lampa.out");
int n,m;
int fibn,fibn1,fibn2;
string s;
void fibbo(int x1,int x2,int pc){
    if(pc==n){
            fibn=x2;
    return;
    }
    if(pc==n-1)fibn1=x2;
    if(pc==n-2)fibn2=x2;
    fibbo(x2,x1+x2,pc+1);
}
bool ver(int na,int nb)
{
   for(int p=0;p<nb;p++)
      if(s[m-p-1]!=s[m-p-1-na-nb]||s[m-p-1]!=s[m-p-1-na-nb-nb]) return 0;
   for(int i=0;i<na;i++)
      if(s[m-nb-1]!=s[m-nb-na-nb-nb-1]) return 0;
   return 1;
}
int main()
{

    f>>n>>m;
    f>>s;
    fibbo(1,1,2);
    int ok=1;
    for(int length2=1;ok,length2<m;length2++){
        int length1=(m-fibn1*length2)/fibn2;
        if(length1*fibn2==m-fibn1*length2){
            int i=1,j=m-length2-length1+1,k=1;
            vector <int> v1,v2;
            if(n%2==0)for(int i=length2;i<length2+length1;i++,k++)v1.push_back(int(s[i]));
            else
                for(int i=0;i<length1;i++)v1.push_back(int(s[i]));
            k=1;
            for(int i=m-length2;i<m;i++,k++)v2.push_back(int(s[i]));
            if(ver(length1,length2)){
                for(int i=0;i<v1.size();i++)g<<char(v1[i]);
                g<<"\n";
                for(int i=0;i<v2.size();i++)g<<char(v2[i]);
            }

        }
    }
    return 0;
}