Cod sursa(job #290273)

Utilizator chibicitiberiuChibici Tiberiu chibicitiberiu Data 27 martie 2009 18:34:27
Problema Prefix Scor 40
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.29 kb
#include<fstream>
#include<string.h>
#define limit 1000000
using namespace std;

int calculate (char sir[])
{
    char testchar[limit];
    int len,lt,max=0,pos, val;
    bool done=false, repeats;
    len=strlen(sir);

    for (int i=1;i<len;i++)
       if (sir[i]==sir[0]) {
            for (int j=0;j<=i;j++) {
                if (j<i) testchar[j]=sir[j];
                else testchar[j]=NULL;
                lt=j;
            }

            repeats=true; val=0;
            for (int j=1;j*lt<len && repeats==true;j++)
            {
                for (int k=0;k<lt;k++) {
                    if (testchar[k]!=sir[(j*lt)+k]) {
                        repeats=false; break;
                    }
                }
                if(repeats){ done=true;
                    val=j*lt+lt;
                    }

            }
            if (val>max) max=val;

        }
    if (!done) return 0;
    else return max;

}

int main()
{
    char sir[limit];
    int t,temp;
    ifstream in ("prefix.in");
    ofstream out ("prefix.out");
    in>>t;
    in.getline(sir, limit, '\n');

    for (int i=0;i<t;i++)
    {
        in.getline(sir, limit, '\n');
        temp=calculate(sir);
        out<<temp<<endl;
    }

    in.close();
    out.close();

    return 0;
}