Cod sursa(job #316863)

Utilizator ssergiussSergiu-Ioan Ungur ssergiuss Data 21 mai 2009 13:23:12
Problema Potrivirea sirurilor Scor 40
Compilator cpp Status done
Runda Arhiva educationala Marime 0.88 kb
# include <algorithm>
using namespace std;

# define DIM 1 << 21

int lg0, lg1, sol[ DIM ];
char s0[ DIM ], s1[ DIM ];

int check ( int x ) {
    
    int i;
    
    for ( i = 1; i < lg0; ++ i )
        if ( s0[ i ] != s1[ i + x ] )
            return 0;
            
    return 1;
}

void read () {
    
    gets ( s0 );
    lg0 = strlen ( s0 );
    scanf ( "\n" );
    gets ( s1 );
    lg1 = strlen ( s1 );
}

void solve () {
    
    int i, j;
    
    for ( i = 0; i < lg1 - lg0 + 2; ++ i )
        if ( s0[ 0 ] == s1[ i ] && check ( i ) )
            sol[ ++ sol[ 0 ] ] = i;
    printf ( "%d\n", sol[ 0 ] );
    for ( i = 1; i <= sol[ 0 ]; ++ i )
        printf ( "%d ", sol[ i ] );
}

int main () {
    
    freopen ( "strmatch.in", "r", stdin );
    freopen ( "strmatch.out", "w", stdout );
    
    read ();
    solve ();
    
    return 0;
}