Cod sursa(job #646184)

Utilizator mihaibogdan10Mihai Bogdan mihaibogdan10 Data 11 decembrie 2011 01:42:39
Problema Potrivirea sirurilor Scor 40
Compilator cpp Status done
Runda Arhiva educationala Marime 0.78 kb
#include<cstdio>
#include<vector>
using namespace std;

struct pozitie	{int lng, poz;};
vector <pozitie> m;
vector <int> sol;
vector <char> a, b;
void Read(vector <char> &v){
	char c;
	do {scanf("%c", &c), v.push_back(c);}
			while (c != '\n');
	v.pop_back();
}

int main(){
	freopen ("strmatch.in", "r", stdin), freopen("strmatch.out", "w", stdout);
	int i, j;
	Read(a);	Read(b);
	
	for (j = 0; j < (int)b.size(); j++){
		for (i = 0 ;i < (int)m.size(); i++)
			if (m[i].lng != -1 && a[m[i].lng] == b[j]){
				if ( ++m[i].lng == (int)a.size()) sol.push_back(m[i].poz);
			}
			else m[i].lng = -1;
		if (b[j] == a[0]) m.push_back( (pozitie){1, j});
		}
		
	printf ("%d\n", sol.size());
	for (i = 0; i < (int)sol.size(); i++) 
		printf("%d ", sol[i]);
	return 0;
}