Cod sursa(job #743251)

Utilizator SpiriFlaviuBerbecariu Flaviu SpiriFlaviu Data 3 mai 2012 19:26:19
Problema Potrivirea sirurilor Scor 14
Compilator cpp Status done
Runda Arhiva educationala Marime 0.99 kb
#include <fstream>
#include <vector>
#include <cstring>
#include <utility>

using namespace std;

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

vector<pair<int, int> > v;
vector<int> rez;

char a[2000001],b[2000001];

int main()
{
    int sol=0;
    fin.getline(a,2000001);
    fin.getline(b,2000001);
    int n=strlen(a);
    int m=strlen(b);
    for(int i=0; i<m ;i++ )
    {

        for(int j=0;j<v.size();j++)
            if(b[i]==a[v[j].second])
            {
                v[j].second++;
                if(v[j].second==n)
                {
                    rez.push_back(v[j].first);
                    sol++;
                    v.erase(v.begin()+j);
                }
            }
            else v.erase(v.begin()+j);
        if(b[i]==a[0])
           v.push_back(make_pair(i,1));

    }
    fout<<sol<<'\n';
    for(int i=0;i<=999 && i<rez.size();i++)
    {
        fout<<rez[i]<<' ';
    }

    fin.close();
    return 0;
}