Cod sursa(job #567771)

Utilizator david_raucaRauca Ioan David david_rauca Data 30 martie 2011 13:52:59
Problema Potrivirea sirurilor Scor 40
Compilator cpp Status done
Runda Arhiva educationala Marime 1.05 kb
#include<fstream>
using namespace std;

ifstream fin("strmatch.in");
ofstream fout("strmatch.out");

char A[2000001];
char B[2000001];

void KMP();
int a[1001];

int main()
{
    fin >> A;
    fin >> B;
    
    KMP();
    
    fin.close();
    fout.close();
    
    return 0;
}

void KMP()
{
     int ok;
     int nr_ap = 0;
     int iaux;
     for( int i = 0; i < strlen(B); ++i )
     {
          ok = 1;
          iaux = 0;
          for( int j = 0; j < strlen(A); ++j )
               if( B[i+j] != A[j] )
               {
                   ok = 0;
                   iaux ++;
                   break;
                   i = iaux;
               }  
               else
                   iaux++;   
          
          if( ok == 1 )
          {
              nr_ap++;
              if( nr_ap <= 1000 )
                  a[nr_ap] = i;
          }     
     }
     
     fout << nr_ap << '\n';
     if( nr_ap > 1000 )
         nr_ap = 1000;
     for( int i = 1; i <= nr_ap; ++i )
          fout << a[i] << ' ';
}