Cod sursa(job #536717)

Utilizator andrei.finaruFinaru Andrei Emanuel andrei.finaru Data 19 februarie 2011 09:27:24
Problema Potrivirea sirurilor Scor 38
Compilator cpp Status done
Runda Arhiva educationala Marime 0.7 kb
#include<fstream.h>
#include<string.h>
ifstream f("strmatch.in");
ofstream g("strmatch.out");
char a[2000001], b[2000001],c;
int nr,p,na,nb,poz[1001],ii;
int main()
{
	int i,j;
	f>>a>>b;c=a[0];
	i=j=0;na=strlen(a);nb=strlen(b)-na+1;
	
	while(j<nb)
	{ 
		i=0;
		while(a[i]==b[j]) 
		{i++; j++;
		 if(c==b[j]&&!p) p=j;
		}
	  if(i==na) 
		  {nr++;
		   if(nr<1001) poz[nr]=j-na;
		  }
	  if(p) j=p,i=p=0;
		  else if(i==0) j++;
	}
	
	
	
	/*while(c)
		{nr++;
		if(nr<1001) poz[nr]=c-b;
		c++;
		c=strstr(c,a);
		}*/
	g<<nr<<'\n';
	if(nr<1001) for(int i=1;i<=nr;i++) g<<poz[i]<<' ';
		else for(int i=1;i<1001;i++) g<<poz[i]<<' ';
	g<<'\n';
	f.close(); g.close();
	return 0;
}