Cod sursa(job #433331)

Utilizator alexandru92alexandru alexandru92 Data 3 aprilie 2010 16:16:12
Problema Potrivirea sirurilor Scor 40
Compilator cpp Status done
Runda Arhiva educationala Marime 1.06 kb
/* 
 * File:   main.cpp
 * Author: VirtualDemon
 *
 * Created on April 3, 2010, 2:09 PM
 */
#include <string>
#include <vector>
#include <cstdlib>
#include <fstream>
#include <iterator>

/*
 *
 */
using namespace std;
string A, B;
vector< int > v;
inline void search( int N, int M )
{
    int i, j, till=N-M+1;
    for( i=0; i < till; ++i )
    {
        for( j=0; j < M; ++j )
            if( B[i+j] != A[j] )
                break;

        if( j == M )
            v.push_back(i);
    }
}
inline vector<int>::iterator ending( void )
{
    if( v.size() > 1000 )
        return v.begin()+1000;
    return v.end();
}
int main( void )
{
    ifstream in( "strmatch.in" );
    getline( in, A );
    getline( in, B );
    char c=A[A.size()-1];
    if(  ( c >= 'a' && c <= 'z' ) || ( c >= '0' && c <= '9' ) || ( c >= 'A' && c <= 'Z' ) )
        search( B.size(), A.size() );
    else search( B.size(), A.size()-1 );
    ofstream out( "strmatch.out" );
    out<<v.size()<<'\n';
    copy( v.begin(), ending(), ostream_iterator<int>( out, " " ) );
    out<<'\n';
    return EXIT_SUCCESS;
}