Cod sursa(job #256324)

Utilizator alecmanAchim Ioan Alexandru alecman Data 11 februarie 2009 16:04:23
Problema Hashuri Scor 30
Compilator cpp Status done
Runda Arhiva educationala Marime 1.19 kb
#include<stdio.h>

#define INPUT "hashuri.in"
#define OUTPUT "hashuri.out"
#define MOD 666013

FILE *fin = fopen(INPUT, "r"), *fout = fopen(OUTPUT, "w");

struct List
{
  long nr;
  List *next;
};

List *Vec[ MOD + 1];

void insert(long Value)
{
  List *p;
  long nodPoz = Value % MOD;

  p = new List;
  p -> nr = Value;
  p -> next = Vec[ nodPoz ];
  Vec[ nodPoz ] = p;
}

void extract(long Value)
{
  List *p;
  long nodPoz = Value % MOD;

  p = Vec[ nodPoz ];

  if( p -> nr == Value)
    Vec[ nodPoz ] = p -> next;
  else
  {
    while(p != NULL && p -> next -> nr != Value)
      p = p -> next;
    p = p -> next -> next;
  }
}

int verify(long Value)
{
  long nodPoz = Value % MOD;
  List *p;

  p = Vec[ nodPoz ];

  while(p != NULL)
    if(p -> nr == Value)
      return 1;
  return 0;
}

int main()
{
  long N, Code, Value;

  fscanf(fin, "%ld", &N);

  for(long i = 0; i < N; ++i)
  {
    fscanf(fin, "%ld %ld", &Code, &Value);
    
    if(Code == 1)
    {
      if(!verify(Value)) insert(Value);
    }
    else
    if(Code == 2)
    {
      if(verify(Value)) extract(Value);
    }
    else
    if(Code == 3)
      fprintf(fout, "%d\n", verify(Value));
  }

  fclose(fin);
  fclose(fout);

  return 0;
}