Cod sursa(job #1774359)

Utilizator SlevySlevoaca Stefan-Gabriel Slevy Data 8 octombrie 2016 20:31:00
Problema Hashuri Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1.18 kb
#include <iostream>
#include <fstream>
#define NMAX 666013

using namespace std;

ifstream in("hashuri.in");
ofstream out("hashuri.out");

struct node{
	int key;
	node *next;
};

struct _list{
	node *head;
};

_list H[NMAX];

bool _find(_list L, int key)
{
	for (node *p = L.head; p != NULL; p = p->next)
		if (p->key == key)
			return 1;
	return 0;
}

void push(_list &L, int key)
{
	if (!_find(L, key))
	{
		node *p = new node;
		p->key = key;
		p->next = NULL;
		if (L.head == NULL)
			L.head = p;
		else
		{
			p->next = L.head;
			L.head = p;
		}
	}
}

void _delete(_list &L, int key) 
{
	if (_find(L, key))
	{
		if (L.head->key == key)
		{
			node *p = L.head;
			L.head = L.head->next;
			delete p;
		}
		else
		{
			node *p;
			for (p = L.head; p->next->key != key; p = p->next);
			node *del = p->next;
			p->next = del->next;
			delete del;
		}
	}
}

int main()
{
	int n, op, key;
	in >> n;
	for (int i = 1; i <= n; i++)
	{
		in >> op >> key;
		if (op == 1)
			push(H[key % NMAX], key);
		else if (op == 2)
			_delete(H[key % NMAX], key);
		else
			out << _find(H[key % NMAX], key) << "\n";
	}
	out.close();
	return 0;
}