Cod sursa(job #2780853)

Utilizator AdrianDiaconitaAdrian Diaconita AdrianDiaconita Data 8 octombrie 2021 01:19:50
Problema Hashuri Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.39 kb
#include <fstream>
#include <iostream>
#include <algorithm>
using namespace std;

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

const int NMAX=1000001;
int indx[NMAX];
int n,tsk,a,crt;

void del(int len, int i, int &crt)
{
    for (int j=i-len+1; j<=crt; j++)
    {
        indx[j]=indx[j+len];
    }
    crt-=len;
}

int bs(int lf, int rg, int x)
{
    if (lf>rg) return -1;
    int mij=(lf+rg)/2;
    if (indx[mij]==x) return mij;
    if (indx[mij]<x)
    {
        return bs(mij+1,rg,x);
    }
    else
    {
        return bs(lf,mij-1,x);
    }
}

int main()
{
    fin>>n;
    for (int i=1;i<=n;i++)
    {
        fin>>tsk>>indx[i];
    }
    crt=n;
    sort(indx,indx+n);

    for (int i=1;i<=n;i++)
    {
        int len=0;
        while (indx[i]==indx[i+1])
        {
            i++;
            len++;
        }
        if (len!=0)
        {
            del(len,i,crt);
        }
        len=0;
    }

    fin.close();
    ifstream fin("hashuri.in");
    fin>>n;
    bool freq[crt+1]={0};
    for (int i=1;i<=n;i++)
    {
        fin >> tsk >> a;
        int hash=bs(1,crt,a);
        
        if (tsk == 1)
        {
            freq[hash]=1;
        }

        if (tsk == 2)
        {
            freq[hash]=0;
        }

        if (tsk == 3)
        {
            fout << freq[hash] << '\n';
        }

    }
}