Cod sursa(job #1687886)

Utilizator bleo16783FMI Bleotiu Cristian bleo16783 Data 13 aprilie 2016 09:39:55
Problema Hashuri Scor 30
Compilator cpp Status done
Runda Arhiva educationala Marime 1.86 kb
#include <iostream>
#include<stdio.h>
using namespace std;
int k=666013,i,j,n,m,o;
long long k10;
struct nod
{
    long long x;
    nod*leg=NULL;
}*prim[666013],*ultim[666013];
bool cautare(long long h)
{
    int i10=h%k;
    nod*p;p=new nod;p=prim[i10];
    while(p!=NULL&&p->x!=h)p=p->leg;
    if(p==NULL)return 0;
    return 1;
}
void ad(long long h)
{
    if(!cautare(h))
    {
        int j10=h%k;
        nod*p1=new nod;p1=prim[j10];
        if(p1==NULL)
        {
            prim[j10]=new nod;ultim[j10]=new nod;
            prim[j10]->x=h;ultim[j10]->x=h;
        }
        else
        {
            p1=ultim[j10]->leg;p1=new nod;p1->x=h;//p1->leg=NULL;
            ultim[j10]=p1;
        }
    }
}
void tedistrug(long long h)
{
    int u10=h%k;
    nod*p2;p2=new nod;p2=prim[u10];
if(p2!=NULL)
{
    if(p2->x==h)
    {
        if(p2->leg==NULL){prim[u10]=NULL;ultim[u10]=NULL;}
        else{prim[u10]=p2->leg;delete p2;}
    }
    else
    {
        while(p2->leg!=NULL&&p2->leg->x!=h)p2=p2->leg;
        if(p2->leg!=NULL)
        {
            nod*p3;
            p3=new nod;p3=p2->leg;
            p2->leg=p3->leg;
            delete p3;
        }
    }
}
}
int main()
{
    for(i=0;i<666013;++i){/*prim[i]=new nod;ultim[i]=new nod;*/prim[i]=NULL;ultim[i]=NULL;}
    FILE*f=fopen("hashuri.in","r");
    fscanf(f,"%d",&n);
    FILE*g=fopen("hashuri.out","w");
    for(i=0;i<n;++i)
    {
        fscanf(f,"%d%lld",&o,&k10);
        if(o<2)
        {
            ad(k10);//cout<<"asdgdg\n";
        }
        else
        {
            if(o<3)
            {
                tedistrug(k10);
            }
            else
            {
                if(cautare(k10))fprintf(g,"1\n");
                else fprintf(g,"0\n");
            }
        }
    }
    fclose(f);
    fclose(g);
    return 0;
}