Cod sursa(job #2296397)

Utilizator lucianistratiIstrati Lucian lucianistrati Data 4 decembrie 2018 17:23:57
Problema Hashuri Scor 0
Compilator c-64 Status done
Runda Arhiva educationala Marime 1.57 kb
#include <iostream>
#include <fstream>
#include <vector>
using namespace std;
const int mod=999999;
vector <int> v[1000001];
void adauga(int x)
{
    int i,nr=x%mod,aux=0; //nr primeste rezultatul functiei modulo
    for(i=0;i<v[nr].size();i++)
    {
        if(v[nr][i]==x)//daca il gasim, este marcat u 1
        {
            aux=1;
        }
        if(v[nr][i]==-1)//daca este marcat cu -1
        {
            aux=1;
            v[nr][i]=x;//v[nr][i] primeste x
        }
    }
    if(aux==0)
    {
        v[nr].push_back(x); //elementul nu a fost gasit, deci il adaugam in vector
    }
}
void sterge(int x)
{
    int i,nr=x%mod;
    for(i=0;i<v[nr].size();i++)
    {
        if(v[nr][i]==x)
        {
            v[nr][i]=-1;//marcam cu -1 elementul sters
        }
    }
}
int gaseste(int x)
{
    int i,nr=x%mod;
    for(i=0;i<v[nr].size();i++)
    {
        if(v[nr][i]==x)//daca am gasit elementul
            return 1; //returnam 1
    }
    return 0;//altfel returnam 0
}
int main()
{
    ifstream fin("hashuri.in");
    ofstream fout("hashuri.out");
    int N,i,op,x;
    fin>>N;//citim numarul de operatii efectuate
    for(i=1;i<=N;i++)
    {
        fin>>op>>x;//citim operatia si numarul 
        if(op==1)
        {
            adauga(x);//adaugam numarul daca op==1
        }
        else if(op==2)
        {
            sterge(x);//adaugam numarul daca op==2
        }
        else
        {
            fout<<gaseste(x)<<"\n";// altfel op==3 
        }
    }
    fin.close();
    fout.close();
    return 0;
}