Untitled

 avatar
unknown
plain_text
2 years ago
968 B
2
Indexable
#include <iostream>
#include <vector>

using namespace std;


struct Node{
    int cnt;
    int go[2];
    
    Node(){
        cnt=0;
        for (int i = 0; i < 26; i++){
            go[i] = -1;
        }
    }
};

vector<Node> trie;

void addNumber(long long int x){
    int v = 0,p=0;
    for (int i = 2; i>-1; i--){
        int cur = ((x >> i) & 1);
        if (trie[v].go[cur] == -1){
            trie.push_back(Node());
            trie[v].go[cur] = trie.size()-1;
        }
        v = trie[v].go[cur];
    }
    trie[v].cnt++;
}

void del(long long int x){
    int v=0;
    for (int i = 5; i>-1; i--){
        int cur = ((x >> i) & 1);
        v = trie[v].go[cur];
    }
    --trie[v].cnt;
}

int main() {
    trie.push_back(Node());
    long long int q,x;
    string s;
    cin>>q;
    for (int i=0;i<q;i++){
        cin>>s>>x;
        if (s == "+"){
            addNumber(x);
        } else if (s == "-"){
            del(x);
        }
    }
    return 0;
}
Editor is loading...