Cod sursa(job #1217304)

Utilizator MaarcellKurt Godel Maarcell Data 7 august 2014 01:37:48
Problema Hashuri Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 1.22 kb
#include <fstream>
#include <vector>
#define prim 100000007
#define ull unsigned long long int
using namespace std;

struct lista{
    ull nr;
    lista *next;
};

ull N,M, A,B,C,D,E; lista *table[prim];

void add(int nr){
    int ind=nr%prim;
    lista *aux = new lista;
    aux->nr=nr;
    aux->next=table[ind];
    table[ind]=aux;
}

bool found(int nr){
    int ind=nr%prim;
    lista *p, *last=NULL;

    for (p=table[ind]; p!=NULL; p=p->next){
        if (p->nr==nr){
            if (p==table[ind]){
                table[ind]=p->next;
                delete(p);
            }
            else{
                last->next=p->next;
                delete(p);
            }
            return 1;
        }

        last=p;
    }
    return 0;
}

int main(){
    ifstream in("muzica.in");
    ofstream out("muzica.out");
    in >> N >> M;
    in >> A >> B >> C >> D >> E;

    ull i,aux,cnt=0,R1=A,R2=B;
    for (i=1; i<=N; i++){
        in >> aux;
        add(aux);
    }

    if (found(A)) cnt++;
    if (found(B)) cnt++;

    for (i=1; i<=M-2; i++){
        aux=R2;
        R2=(C*R2+D*R1)%E;
        R1=aux;
        if (found(R2)) cnt ++;
    }

    out << cnt;
    return 0;
}