Cod sursa(job #561672)

Utilizator desoComan Andrei deso Data 21 martie 2011 02:09:36
Problema Hashuri Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 1.18 kb
#include <cstdlib>
#include <iostream>
using namespace std;

#define INFILE "hashuri.in" 
#define OUTFILE "hashuri.out"
#define MOD 660053

struct nod{
  int val;
  nod* next;
};

nod* table[MOD];

int contains(int x)
{
  nod* n = table[x % MOD];
  while( n!=NULL && n->val!=x )
    n = n->next;
  
  return (n!=NULL);
}

void add(int x)
{
  if( contains(x) )
    return;
  int key = x % MOD;
  nod* nx = new nod();
  nx->val = x;
  nx->next = table[key];
  table[key] = nx;
}

void del(int x)
{
  int key = x % MOD;
  nod* n = table[key];
  nod* m = NULL;
  while( n!=NULL)
  {
    if( n->val==x )
    {
      if( m==NULL )
        table[key] = n->next;
      else
        m->next = n->next;
      delete n; 
      return;
    }
    m = n; 
    n = n->next;
  }
}

int main()
{
  int n, nr;
  int op;
  FILE* fin;
  FILE* fout;
  fopen_s(&fin, INFILE, "r");
  fopen_s(&fout, OUTFILE, "w");
  memset(table, NULL, sizeof(table));
  fscanf_s(fin, "%d", &n);
  while( n-- )
  {
    fscanf_s(fin, "%d %d", &op, &nr);
    if( op==1 ) add(nr);
    else if( op==2 ) del(nr);
    else fprintf(fout, "%d\n", contains(nr));
  }
	
	return 0;
}