Cod sursa(job #1512497)

Utilizator codi22FMI Condrea Florin codi22 Data 28 octombrie 2015 09:51:24
Problema Potrivirea sirurilor Scor 40
Compilator cpp Status done
Runda Arhiva educationala Marime 1.11 kb
#include <iostream>
#include <cstdio>
#include <cstring>
using namespace std;
char x1[2000000],x2[2000000];
int i,s1,s2,l1,l2,k,j,p,V[1000];
int main()
{
    freopen("strmatch.in","r",stdin);
    freopen("strmatch.out","w",stdout);
    scanf("%2000000s",x1);
    scanf("%2000000s",x2);
    l1=strlen(x1);
    l2=strlen(x2);
    for (i=0;i<l1;i++)
    {
        s1+=x1[i]-'a'+1;
        s2+=x2[i]-'a'+1;
    }
    if (s1==s2)
    {
        k=0;
        for (j=0;j<l1;j++)
        {
            if (x1[j]!=x2[j]) {k=1;break;}
        }
        if (k==0)
        {
            V[p]=0;
            p++;
        }
    }
    for (i=0;i<l2-l1;i++)
    {
        s2-=x2[i];
        s2+=x2[i+l1];
        if (s1==s2)
        {
            k=0;
          //  cout<<i+1<<" ";
            for (j=0;j<l1;j++)
            {
                if (x1[j]!=x2[i+j+1]) {k=1;break;}
            }
            if (k==0)
            {
                V[p]=i+1;
                p++;
            }
        }
    }
    cout<<p<<'\n';
    p=min(p,1000);
    for (i=0;i<p;i++)
        cout<<V[i]<<" ";


}