Cod sursa(job #1993264)

Utilizator ruxandramateiMatei Ruxandra ruxandramatei Data 22 iunie 2017 16:42:10
Problema Prefix Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.07 kb
#include <iostream>
#include <fstream>
#include <string.h>

using namespace std;

ifstream in("prefix.in");
ofstream out("prefix.out");

int n;
char s[1000001];
//n-nr de siruri ce trebuie citite

void rezolvare(){
  int perioada = 1, solutie = 0;
  int lgSirNou = 0;
  int lgSir = strlen(s);
  for(int i = 1; i < lgSir; i++){//sa fie legate intre ele + reguli cand nu verifici cu urm
    if(s[i] == s[i - perioada] && (s[i+1] == s[i+1 - perioada] || i == lgSir -1 || lgSirNou == perioada -1))
      lgSirNou ++;
    //i == lgsir - 1, lgSirNou == perioada - 1 = conditii cand nu mai verifici elementul urm s[i+1] ca stii ca difera
    //puncte in care nu se schimba perioada
    else{//nu eu un sir bun
      lgSirNou = 0;
      perioada = i;
      //distanta lui i fata de primul punct
      //perioada literelor se mareste
    }
    if(lgSirNou == perioada){
      lgSirNou = 0;
      solutie = i;
    }
  }
  out << solutie << '\n';
}

void citire(){
  in >> n;
  for(int i = 1; i <= n; i++){
    in >> s+1;
    s[0] = (char)'z'+1;
    rezolvare();
  }
}

int main(){
  citire();
  return 0;
}