Cod sursa(job #3149991)

Utilizator Redstoneboss2Fabian Lucian Redstoneboss2 Data 14 septembrie 2023 12:14:44
Problema Potrivirea sirurilor Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.75 kb
#include <bits/stdc++.h>

using namespace std;

int main(){
	
	string a, b;
	vector<int> pos, aux;
	
	fin >> a >> b;
	
	aux.resize(b.size());
	aux[0] = -1;
	
	for(int i = 1, j = -1; i < aux.size(); i++){
		aux[i] = -1;
		
		if(a[i] == a[j + 1]){
			j++;
			aux[i] = j + 1;
		}else{
			while(j != -1 && a[i] != a[j + 1]){
				j = aux[j];
			}
			
			if(a[i] == a[j + 1]){
				j++;
				aux[i] = j + 1;
			}
		}
	}
	
	for(int i = 0, j = -1; i < b.size(); i++){
		if(b[i] == a[j + 1]){
			j++;
			
			if(j == a.size() - 1){
				pos.push_back(i - j + 1);
				j = aux[j];
			}
		}
		
		while(j != -1 && b[i] != a[j + 1]){
			j = aux[j];
		}
		
		if(b[i] == a[j + 1]){
			j++;
			
			if(j == a.size() - 1){
				pos.push_back(i - j + 1);
				j = aux[j];
			}
		}
	}
	
	return 0;
}