Cod sursa(job #2480917)

Utilizator VeliceaFabianPavelVelicea Fabian Pavel VeliceaFabianPavel Data 26 octombrie 2019 11:10:31
Problema Prefix Scor 40
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.3 kb
#include<fstream>
#include<string.h>
#define NMAX 1000000
using namespace std;
 
int calculate (char sir[])
{
    char testchar[NMAX];
    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[NMAX];
    int t,temp;
    ifstream in ("prefix.in");
    ofstream out ("prefix.out");
    in>>t;
    in.getline(sir, NMAX, '\n');
 
    for (int i=0;i<t;i++)
    {
        in.getline(sir, NMAX, '\n');
        temp=calculate(sir);
        out<<temp<<endl;
    }
 
    in.close();
    out.close();
 
    return 0;
}