Cod sursa(job #98380)

Utilizator flo_demonBunau Florin flo_demon Data 10 noiembrie 2007 12:59:05
Problema Abc2 Scor 0
Compilator cpp Status done
Runda Happy Coding 2007 Marime 1.16 kb
#include <stdio.h>
#include <deque>
#include <set>
#include <string>

using namespace std;

#define MAX 10000005
#define MAXC 20

char a[MAX];
char auxc[MAXC];
deque<char> candidat, auxd;
set<deque<char> > cuv;
set<deque<char> >::iterator start, end;
int rez;

int main()
{
    int cuv_l = -1, text_l = -1;
    FILE *fin = fopen("abc2.in", "r");
    fscanf(fin, "%s", a);
    text_l = strlen(a);
    while (fscanf(fin, "%s", auxc) > 0)
    {
        if (auxd.size() == 0)
            auxd.resize(strlen(auxc));
        if (cuv_l == -1)
            cuv_l = strlen(auxc);
        for (int i = 0; i < cuv_l; ++i)
            auxd[i] = auxc[i];
        cuv.insert(auxd);
    }
    fclose(fin);

    candidat.clear();
    for (int i = 0; i < cuv_l; ++i)
        candidat.push_back(a[i]);
    if (cuv.find(candidat) != cuv.end())
        rez++;
    for (int i = cuv_l; i < text_l; ++i)
    {
        candidat.pop_front();
        candidat.push_back(a[i]);
        if (cuv.find(candidat) != cuv.end())
            rez++;
    }
    
    FILE *fout = fopen("abc2.out", "w");
    fprintf(fout, "%d\n", rez);
    fclose(fout);
    
    return 0;
}