Cod sursa(job #433288)

Utilizator alexandru92alexandru alexandru92 Data 3 aprilie 2010 15:29:03
Problema Potrivirea sirurilor Scor 24
Compilator cpp Status done
Runda Arhiva educationala Marime 0.99 kb
/* 
 * File:   main.cpp
 * Author: VirtualDemon
 *
 * Created on April 3, 2010, 2:09 PM
 */
#include <cstring>
#include <cstdlib>
#include <fstream>
#include <iterator>
#define Nmax 4000002

/*
 * 
 */
using namespace std;
char A[Nmax>>1], B[Nmax], C[Nmax>>1];
int v[1001];
inline const int& min( const int x, const int& y )
{
    if( x < y )
        return x;
    return y;
}
int main(int argc, char** argv)
{
    int N, M, i, j, k=0;
    ifstream in( "strmatch.in" );
    in.getline( A, Nmax, '\n' );
    A[strlen(A)-1]='\0';
    in.get( B, Nmax );
    strcpy( C, B );
    strcat( B, C );
    N=min( strlen(C), 1001 );
    for( M=strlen(A), i=0; i < N; ++i )
        if( B[i] == A[0] )
        {
            for( j=1; j < M; ++j )
                if( A[j] != B[i+j] )
                    break;
            if( j == M )
                v[k]=i, ++k;
        }
    ofstream out( "strmatch.out" );
    out<<k<<'\n';
    copy( v, v+k, ostream_iterator<int>(out, " ") );
    out<<'\n';
    return EXIT_SUCCESS;
}