Pagini recente » Cod sursa (job #2639486) | Cod sursa (job #3259139) | Cod sursa (job #2203975)
#include<iostream>
#include<fstream>
#define prim 100003
using namespace std;
ifstream f("hashuri.in");
ofstream g("hashuri.out");
struct nod {
int info;
nod *next;
};
int exists(nod *p, int info) {
nod *q = p;
while (q != NULL) {
if (q->info == info)
return 1;
q = q->next;
}
return 0;
}
void add_nod(nod *&p, nod *&u, int info) {
if (!exists(p,info)) {
if (p == NULL) {
p = new nod;
p->info = info;
u = p;
u->next = NULL;
}
else {
nod *c = new nod;
c->info = info;
u->next = c;
u = c;
u->next = NULL;
}
}
}
void delete_nod(nod *&p, nod *&u, int s) {
if (p == NULL) return;
if ((p->next == NULL) && (p->info = s)) {
delete p;
p = u = NULL;
return;
}
nod *c = p;
nod* x = p->next;
while (x->next != NULL) {
if (x->info == s)
{
c->next = x->next;
delete x;
return;
}
x = x->next;
c = c->next;
}
if (x->info == s) {
delete x;
c->next = NULL;
}
}
int search_nod(nod *&p, int s) {
nod *q = p;
while (q != NULL) {
if (q->info == s)
return 1;
q = q->next;
}
return 0;
}
int main()
{
int nr_op, op, x;
nod* p[prim],* u[prim];
for (int i = 0; i < prim; i++) {
p[i] = u[i] = NULL;
}
f >> nr_op;
while (!f.eof()) {
f >> op >> x;
if (op == 1) {
add_nod(p[x%prim], u[x%prim], x);
}
if (op == 2) {
delete_nod(p[x%prim], u[x%prim], x);
}
if (op == 3) {
g << search_nod(p[x%prim], x) << '\n';
}
}
f.close();
g.close();
return 0;
}