Cod sursa(job #1674877)

Utilizator martonsSoos Marton martons Data 4 aprilie 2016 22:00:51
Problema Potrivirea sirurilor Scor 40
Compilator cpp Status done
Runda Arhiva educationala Marime 1 kb
#include <cstdio>
#include <vector>

using namespace std;

char a[2000000], b[2000000];

int main()
{
    FILE* f=fopen("strmatch.in", "r");
    FILE* f1=fopen("strmatch.out", "w");

    fscanf(f, "%s\n%s", &a, &b);

    vector<int> v;
    vector<int> fin;
    int i=-1;
    int c=0;
    int fincnt=0;

    do{
        i++;
        for(vector<int>::iterator it= v.begin();it!=v.end();it++)
        {
            if(a[i-(*(it))]=='\0'){
                c++;
                if(fincnt<1000){
                    fin.push_back(*it);
                    fincnt++;
                }
                v.erase(it);
                it--;
            }
            else if(a[i-*it]!=b[i]){
                v.erase(it);
                it--;
            }
        }
        if(b[i]==a[0])
            v.push_back(i);
    }while(b[i]!='\0');

    fprintf(f1, "%d\n", c);
    for(int i=0;i<c&&i<1000;i++){
        fprintf(f1, "%d ", fin[i]);
    }
    fprintf(f1, "\n");
    return 0;
}