Cod sursa(job #1798838)

Utilizator iulianrotaruRotaru Gheorghe-Iulian iulianrotaru Data 5 noiembrie 2016 14:43:06
Problema Lampa Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.02 kb
#include <bits/stdc++.h>
using namespace std;
#define MAX 3040010
ifstream f("lampa.in");
ofstream g("lampa.out");
char a[MAX];
int n,m,na,nb,dp[30][2];
bool ok(int na,int nb)
{
   for(int p=0;p<nb;p++)
      if(a[m-p-1]!=a[m-p-1-na-nb]||a[m-p-1]!=a[m-p-1-na-nb-nb]) return 0;
   for(int i=0;i<na;i++)
      if(a[m-nb-1]!=a[m-nb-na-nb-nb-1]) return 0;
   return 1;
}
void print()
{
    double lgb=0;
    for(lgb=m/nb;lgb>0;lgb--)
    {
        if((int)(m-lgb*nb)/na==(double)(m-lgb*nb)/na)
        if(ok((m-lgb*nb)/na,lgb))
        {
            for(int i=m-lgb-((m-lgb*nb)/na);i<m-lgb;i++) g<<a[i];
            g<<'\n';
            for(int j=m-lgb;j<m;j++) g<<a[j];
            return;
        }
    }
    g<<0;
}
int main()
{
    f>>n>>m;
    f.getline(a,MAX);
    f.getline(a,MAX);
    dp[0][0]=dp[1][1]=1;
    for(int i=2;i<n;i++)
    {
        dp[i][0]=dp[i-1][0]+dp[i-2][0];
        dp[i][1]=dp[i-1][1]+dp[i-2][1];
    }
    na=dp[n-1][0];
    nb=dp[n-1][1];
    print();
    return 0;
}