Cod sursa(job #283528)

Utilizator gggbbbyyyDarkMan gggbbbyyy Data 19 martie 2009 11:44:14
Problema Potrivirea sirurilor Scor 14
Compilator cpp Status done
Runda Arhiva educationala Marime 0.75 kb
#include <fstream.h>
#include <iostream.h>
#include <string.h>

int main()
{
  char s1[200001],s2[200001];
  int   v[200000];
  int i,k,m1,m2,p,l,mx=1,w=0;
  ifstream f("strmatch.in");
  ofstream g("strmatch.out");
  f>>s2;
  f>>s1;
  m1=strlen(s1);
  m2=strlen(s2);
  for(i=1;i<=m2;i++)
    {
      k=1;
      while((k+i<=m2)&&(s2[k-1]==s2[k+i-1]))
	k++;
      if((k+i-1==m2)&&(s2[k-2]==s2[k+i-2]))
	goto sl;
      if(mx<k)
	mx=k;
    }
  k=mx;
  sl:;
  p=0;
  while(p<=m1-m2)
    {
      l=1;
      while((l<=m2)&&(s1[p+l-1]==s2[l-1]))
	l++;
      if((s1[p+m2-1]==s2[m2-1])&&(l-1==m2))
	v[++w]=p;
      if(l-1<k)
	p+=l;
      else
	p+=k;
    }
  g<<w<<endl;
  for(i=1;i<=w;i++)
    g<<v[i]<<' ';
  g.close();
  return(0);
}