Cod sursa(job #3197212)

Utilizator PapCzierPeterPap-Czier Peter PapCzierPeter Data 25 ianuarie 2024 23:52:39
Problema Potrivirea sirurilor Scor 40
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.8 kb
#include <iostream>
#include <string.h>
#include <queue>
#include <fstream>
using namespace std;

int main()
{
   ifstream f ("strmatch.in");
   ofstream g ("strmatch.out");
    bool p=true;
    int db=0,db2=0;
    queue<int>q,qq;
    char a[2000000],b[2000000];
    f.getline(a, 2000000);
    f.getline(b, 2000000);
    for (int i=0; i<strlen (b); i++) if (a[0]==b[i]) {
        if (a[strlen(a)-1]==b[i+strlen(a)-1]) {q.push(i); db++;}
    }
    while (db>0) {p=true;
            int v=q.front(); q.pop(); db--;
            for (int i=1; i<strlen(a)-1 &&p==true; i++){
                if(a[i]!=b[v+i]) p=false;
            }
            if (p==true) {qq.push(v); db2++;}
     }
     g<<db2<<endl;
     while (db2>0) {
       g<< qq.front()<<" "; qq.pop(); db2--;
     }
 return 0;
}