Cod sursa(job #2074919)

Utilizator doruliqueDoru MODRISAN dorulique Data 25 noiembrie 2017 09:52:56
Problema Potrivirea sirurilor Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.88 kb
#include <cstdio>
#include <cstring>
using namespace std;

char s[2000010],p[2000010];
int na=0,ind[1010],n,m;

int potrivire(int i)///functzia verifica potrvirea lui p in s incepind de la indicele i
{
    //ne bazam pe n,m,s,p globale
    if(i+m>n)return 0;
    int j;
    for(j=0;j<m;j++)
        if(s[i+j]!=p[j])return 0;
    return 1;
}

int main()
{
    FILE *f=fopen("strmatch.in","r");
    fgets(p,2000010,f);//astea din pacate citesc shi \n
    fgets(s,2000010,f);
    m=strlen(p),n=strlen(s);
    int i;
    if(p[m-1]=='\n')p[--m]=0;
    if(s[n-1]=='\n')p[--n]=0;
    for(i=0;i<n-m+1;i++)
      if(potrivire(i))
        {
            if(na<1000)ind[na]=i;
            na++;
        }
    fclose(f);
    f=fopen("strmatch.out","w");
    fprintf(f,"%d\n",na);
    if(na>1000)na=1000;
    for(int i=0;i<na;i++)fprintf(f,"%d ",ind[i]);
    return 0;
}