Pagini recente » Cod sursa (job #1979305) | Cod sursa (job #1220245) | Cod sursa (job #443551) | Cod sursa (job #1481825) | Cod sursa (job #1993264)
#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;
}