Cod sursa(job #2923697)

Utilizator lolismekAlex Jerpelea lolismek Data 18 septembrie 2022 00:43:28
Problema Reguli Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.76 kb
#include <iostream>
#include <fstream>

using namespace std;

ifstream fin("reguli.in");
ofstream fout("reguli.out");

const int N = 5e5;
int v[N + 1], kmp[N + 1], f[N + 1];

void Kmp(int n){
	for(int i = 2; i <= n; i++){
		int l = kmp[i - 1];
		while(l >= 1 && v[l + 1] != v[i])
			l = kmp[l];
		if(v[l + 1] == v[i])
			kmp[i] = l + 1;
	}
}

int main(){

	/*int n, x0;
	fin >> n >> x0, n--;

	int sub = 0;
	for(int i = 1; i <= n; i++){
		fin >> v[i], v[i] -= x0;
		v[i] -= sub, sub += v[i];
	}*/

	string s;
	fin >> s;
	int n = s.size();

	s = "$" + s;

	for(int i = 1; i <= n; i++)
		v[i] = s[i];


	Kmp(n);

	int cyc = n - kmp[n];
	fout << cyc << '\n';
	for(int i = 1; i <= cyc; i++)
		fout << v[i] << '\n';

	return 0;
}