Cod sursa(job #2200340)

Utilizator icansmileSmileSmile icansmile Data 1 mai 2018 00:31:41
Problema Potrivirea sirurilor Scor 14
Compilator cpp Status done
Runda Arhiva educationala Marime 1.12 kb
#include <stdio.h>
#include <stdlib.h>
#include <iostream>
#include <fstream>
#include <vector>
#include <cstring>

#define MAX_LENGTH 2000000

int min(int first, int second) {
    if (first < second)
        return first;
    return second;
}

int main() {
    char *first, *second;
    int numberOfPositionShow;
    std::vector<unsigned long> positions;
    int numberOfElements = 0;

    FILE *input = fopen("strmatch.in", "r");
    FILE *output = fopen("strmatch.out", "w");

    first = (char *)malloc(MAX_LENGTH * sizeof(char));
    second = (char *)malloc(MAX_LENGTH * sizeof(char));

    fscanf(input, "%s", first);
    fscanf(input, "%s", second);

    char *p = strstr(second, first);

    while (p != NULL) {
        unsigned long position = p - second;

        positions.push_back(position);
        numberOfElements++;

        p = strstr(p + 1, first);
    }

    fprintf(output, "%d\n", numberOfElements);
    for (int i = 0; i < min(1000, numberOfElements); i++) {
        fprintf(output, "%llu ", positions[i]);
    }

    fclose(input);
    fclose(output);

    return 0;
}