Cod sursa(job #2781168)

Utilizator AdrianDiaconitaAdrian Diaconita AdrianDiaconita Data 8 octombrie 2021 18:04:17
Problema Hashuri Scor 30
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 indx2[NMAX];
bool freq[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 (indx2[mij]==x) return mij;
    if (indx2[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+1,indx+n+1);

    int len = 0;
    for (int i=1;i<n;i++)
    {

        if( indx[i]==indx[i+1] ){
            len++;
            indx2[len] = indx[i];
        }

        while (indx[i]==indx[i+1])
        {
            i++;
        }
    }

    fin.close();
    ifstream fin("hashuri.in");
    fin>>n;

    for (int i=1;i<=n;i++)
    {
        fin >> tsk >> a;
        int hash=bs(1,len,a);

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

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

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

    }
}