Cod sursa(job #856103)

Utilizator taigi100Cazacu Robert taigi100 Data 15 ianuarie 2013 22:26:06
Problema Potrivirea sirurilor Scor 40
Compilator cpp Status done
Runda Arhiva educationala Marime 0.82 kb
#include <stdio.h>
#include <string.h>
 
int dic[300],v[1005];
char a[2000005],b[2000005];
void comp_dic()
{
    int n=strlen(a);
	memset(dic,n,sizeof(dic));
    for(int i=0;i<n - 1;i++)
        dic[a[i]]=n-i-1;
}
 
 
int main()
{
    FILE *f=fopen("strmatch.in","r");
    fscanf(f,"%s",&a);
    fscanf(f,"%s",&b);
    comp_dic();
    char *p;
    int cont=0;
    p=b;
    while(p)
    {
        p=strstr(p,a);
        if(p)
        {
        if(cont<1000)
        {
            cont++;
            v[cont]=p-b;
            p+=dic[p[0]];
        }
        else
        {
            cont++;
            p+=dic[p[0]];
        }
        }
    }
    FILE *g=fopen("strmatch.out","w");
    fprintf(g,"%d\n",cont);
	fprintf(g,"%d",v[1]);
    for(int i=2;i<=cont;i++)
        fprintf(g," %d",v[i]);
}