Cod sursa(job #1016898)

Utilizator Catalina_BrinzaBrinza Catalina Catalina_Brinza Data 26 octombrie 2013 21:27:49
Problema Hashuri Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 1.27 kb
//
//  main.cpp
//  hasuri
//
//  Created by Catalina Brinza on 10/26/13.
//  Copyright (c) 2013 Catalina Brinza. All rights reserved.
//

#include <iostream>
#include <fstream>
using namespace std;
ifstream f("hashuri.in");
ofstream g("hashuri.out");

struct nod
{
    int v;
    nod *next;
};
nod *a[3001]; int p;
void h1(int x)
{
    if (a[x%p]->v==0)
    {
        a[x]->v=x;
        a[x]->next=NULL;
    }
    else
    {
        nod *m=a[x%p];
        while (m->next->v<x) m=m->next;
        if (m->next->v!=x)
        {
            nod *q;
            q=new nod;
            q->next=m->next;
            m->next=q;
            q->v=x;
        }
        
    }
    return;
}

void h2(int x)
{
    nod *q,*m;
    m=a[x%p];
    q=m->next;
    while (m->next!=NULL)
    if (q->v==x) {
        m=q->next;
        return;
    }
    else {m=q; q=q->next;}
    return;
}

void h3(int x)
{
    nod *m;
    m=a[x%p];
    while (m->next!=NULL)
        if (m->v==x){ g<<1<<"\n";return;}
        else m=m->next;
    g<<0<<"\n";return;
        
}

int main()
{int i,n,p,x,y;

    f>>n;
    p=3001;
    for (i=0;i<p;i++) a[i]->v=0;
    for (i=0;i<n;i++)
    {
        f>>y>>x;
        if (y==1) h1(x);
        else if (y==2) h2(x);
        else h3(x);
    }
    f.close();
    g.close();
    return 0;
}